如何在 Linux 上启动/运行 .jnlp?

如何在 Linux 上启动/运行 .jnlp?

我下载了一些带有.jnlp扩展的应用程序示例。实际上,这些都是小型 JavaFX 应用程序。并且.jnlp应该使用 Java Web Start 运行。

现在,我安装了 Xubuntu、jdk 1.7 和 Iced Tea Web Start,当我尝试在浏览器中打开其中一些应用程序时(我认为 Web Start 应该可以加载),什么也没发生。我是不是漏掉了什么,或者我还能如何.jnlp在 Linux 上启动应用程序?

答案1

为了运行 Java 网络启动协议 (日语自然语言处理)您需要有 Java Web Start(JavaWS) 软件是否已安装在您的系统上。要验证,请打开终端并输入:

javaws

至少对于基于 Debian 的 Linux 发行版来说,JavaWS 包含在icedtea-netx软件包。要使用 apt(软件包管理器)安装它:

sudo apt install icedtea-netx

可能需要一些 Java 依赖项。如果是这样,apt 会提示您。

正确安装所有内容后,只需运行:

javaws file.jnlp

答案2

为此,最简单的方法是从 Oracle 公司下载 Java 运行时包(今天的版本是 Version 8 Update 361):

对于我撰写本文时(2023-03-12)的英语标准包,请转到 java 下载页面并复制适用于您的系统的链接(在此示例中,我使用的是 x86_64 存档。您必须使用在 java 下载页面上复制的链接,而不是本文中的链接): Java 下载

之后,转到 /usr/lib/jvm 文件夹并提取包: 以下是下载、提取的完整示例...

$ cd download
$ wget -O jre-8u361-linux-x64.tar.gz https://javadl.oracle.com/webapps/download/AutoDL?BundleId=247938_0ae14417abb444ebb02b9815e2103550
--2023-03-12 12:11:30--  https://javadl.oracle.com/webapps/download/AutoDL?BundleId=247938_0ae14417abb444ebb02b9815e2103550
Resolving javadl.oracle.com (javadl.oracle.com)... 104.108.60.58, 2a02:26f0:9100:13a8::3311, 2a02:26f0:9100:139e::3311
Connecting to javadl.oracle.com (javadl.oracle.com)|104.108.60.58|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://sdlc-esd.oracle.com/ESD6/JSCDL/jdk/8u361-b09/0ae14417abb444ebb02b9815e2103550/jre-8u361-linux-x64.tar.gz?GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/8u361-b09/0ae14417abb444ebb02b9815e2103550/jre-8u361-linux-x64.tar.gz&BHost=javadl.sun.com&File=jre-8u361-linux-x64.tar.gz&AuthParam=1678620691_2c78701ea65b58997f0629935ba907e4&ext=.gz [following]
--2023-03-12 12:11:31--  https://sdlc-esd.oracle.com/ESD6/JSCDL/jdk/8u361-b09/0ae14417abb444ebb02b9815e2103550/jre-8u361-linux-x64.tar.gz?GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/8u361-b09/0ae14417abb444ebb02b9815e2103550/jre-8u361-linux-x64.tar.gz&BHost=javadl.sun.com&File=jre-8u361-linux-x64.tar.gz&AuthParam=1678620691_2c78701ea65b58997f0629935ba907e4&ext=.gz
Resolving sdlc-esd.oracle.com (sdlc-esd.oracle.com)... 23.212.156.99, 2a02:26f0:9100:185::b3b, 2a02:26f0:9100:18c::b3b
Connecting to sdlc-esd.oracle.com (sdlc-esd.oracle.com)|23.212.156.99|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 97071671 (93M) [application/x-gzip]
Saving to: 'jre-8u361-linux-x64.tar.gz'

jre-8u361-linux-x64.tar.gz 100%[======================================>]  92.57M   202MB/s    in 0.5s    

2023-03-12 12:11:31 (202 MB/s) - 'jre-8u361-linux-x64.tar.gz' saved [97071671/97071671]

确认您已下载软件包并转到 /usr/lib/jvm 提取 tarball

$ ls -lh jre-8u361-linux-x64.tar.gz 
-rw-r--r-- 1 nba nba 93M Jan  9 19:30 jre-8u361-linux-x64.tar.gz
$ cd /usr/lib/jvm
/usr/lib/jvm$ sudo tar -zxf  ~/download/jre-8u361-linux-x64.tar.gz

验证包是否已成功提取:

$ ls -l | grep jre1.8.0_361
drwxr-xr-x 1 root  root  244 Mar 12 12:15 jre1.8.0_361

并验证您是否拥有所有 JRE 二进制文件:

$ cd jre1.8.0_361/bin/
$ ls -l
total 464K
lrwxrwxrwx 1 10143 10143    8 Jan  9 09:40 ControlPanel -> jcontrol
-rwxr-xr-x 1 10143 10143 8.6K Jan  9 09:40 java
-rwxr-xr-x 1 10143 10143 146K Jan  9 09:40 javaws
-rwxr-xr-x 1 10143 10143 6.2K Jan  9 09:40 jcontrol
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 jjs
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 keytool
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 orbd
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 pack200
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 policytool
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 rmid
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 rmiregistry
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 servertool
-rwxr-xr-x 1 10143 10143 8.7K Jan  9 09:40 tnameserv
-rwxr-xr-x 1 10143 10143 183K Jan  9 09:40 unpack200

现在您可以使用 javaws 程序启动 JNLP 文件:

/usr/lib/jvm/jre1.8.0_361/bin/javaws ~/download/jviewer.jnlp

如果您希望 Firefow 直接启动 JNLP 文件,请转到 Firefox 首选项并搜索“类型”。它将列出所有文件类型和要执行的相关操作。对于 JNLP 文件,请编辑属性并选择自定义程序。它将打开您的系统浏览器,然后选择:/usr/lib/jvm/jre1.8.0_361/bin/javaws

保存即可完成。

下一部分不是强制性的,只是对答案的扩展:

对于那些想要管理系统默认 JRE 环境的人,你可以用“替代方案”来实现

$ sudo update-alternatives --list javaws
update-alternatives: error: no alternatives for javaws

我们将为 javaws 创建一个替代方案(您也可以为 java、jcontrol 以及 bin/ 目录中的所有二进制文件执行此操作)

$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jre1.8.0_361/bin/javaws 0 
update-alternatives: using /usr/lib/jvm/jre1.8.0_361/bin/javaws to provide /usr/bin/javaws (javaws) in auto mode

通过替代方案,您可以安装不同版本的 Java,例如:

$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jre1.8.0_291/bin/javaws 1
update-alternatives: using /usr/lib/jvm/jre1.8.0_291/bin/javaws to provide /usr/bin/javaws (javaws) in auto mode

核实

$ sudo update-alternatives --list javaws
/usr/lib/jvm/jre1.8.0_291/bin/javaws
/usr/lib/jvm/jre1.8.0_361/bin/javaws

现在我们将看到如何修改替代方案:

$ sudo update-alternatives --config javaws
There are 2 choices for the alternative javaws (providing /usr/bin/javaws).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/jre1.8.0_291/bin/javaws   1         auto mode
  1            /usr/lib/jvm/jre1.8.0_291/bin/javaws   1         manual mode
  2            /usr/lib/jvm/jre1.8.0_361/bin/javaws   0         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jre1.8.0_361/bin/javaws to provide /usr/bin/javaws (javaws) in manual mode

这里我们只需选择最后一个选项‘2’来使用我们在 java.com 上下载的第一个版本(361)验证:

$ sudo update-alternatives --config javaws
There are 2 choices for the alternative javaws (providing /usr/bin/javaws).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/jre1.8.0_291/bin/javaws   1         auto mode
  1            /usr/lib/jvm/jre1.8.0_291/bin/javaws   1         manual mode
* 2            /usr/lib/jvm/jre1.8.0_361/bin/javaws   0         manual mode

Press <enter> to keep the current choice[*], or type selection number: 
$

我们完成了!现在您选择的替代方案就是您的系统将用来提供

/usr/bin/javaws 

它也适用于旧版本的 JAVA,例如 JRE 1.6 或 JRE 1.7

您还必须注意,可以使用“jcontrol”命令修改 java 安全性和异常(jcontrol 二进制文件与“java”和“javaws”位于同一目录中)

答案3

据我所知,JNLP 文件本质上是一个带有指向 JAR 文件的链接的 XML 文件。

如果你不愿意安装其他软件包而只想运行该程序,只需

  • 在文本编辑器中打开 JNLP 文件并找到链接(或cat app.jnlp | grep href),
  • 下载与主页和链接相关的 .jar 文件(wget例如使用),
  • 然后java -jar app.jar

https://stackoverflow.com/questions/11594047/how-to-get-jar-file-from-jnlp-file了解更多信息。

相关内容