我下载了一些带有.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了解更多信息。