我在 Ubuntu MATE 18.04 上。我尝试过的所有 jnlp 应用程序都会出现执行错误。经过检查,Java 中似乎缺少一些库。
于是我把所有东西都删了,重新开始安装,发现apt-get install icedtea-8-plugin依赖:
ca-certificates-java default-jre default-jre-headless icedtea-8-plugin
icedtea-netx librhino-java libtagsoup-java openjdk-11-jre
openjdk-11-jre-headless
Run Code Online (Sandbox Code Playgroud)
虽然预计依赖于 openjdk-8,而不是 11(根据 ubuntu 软件包网站)。我怀疑 jdk-11 不包含一些为此所需的库。
我的猜测是我安装了一些 PPA,现在会产生这种情况,其中 jdk-11 是比任何 jdk-8 包都更新的选择。那么,我怎样才能实现使用 openjdk-8 而不是 11 安装了 icedtea-8 呢?
编辑:这是我尝试从 Firefox 启动 jnlp 应用程序时的输出:
Denying permission: ("java.lang.RuntimePermission" "accessClassInPackage.sun.util.resources")
net.sourceforge.jnlp.LaunchException: Fatal: Launch Error: Could not launch JNLP file. The application has not been initialized, for more information execute javaws/browser from the command line and send a bug report. at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:582)
...
Running jdk9+ ?
java.lang.ClassNotFoundException: sun/misc/JarIndex
...
java.io.FileNotFoundException: /home/roman/.config/icedtea-web/deployment.properties (No existe el archivo o el directorio) at java.base/java.io.FileInputStream.open0(Native Method)
Run Code Online (Sandbox Code Playgroud)
ClassNotFoundException: sun/misc/JarIndex 是什么让我认为这是由于对 jdk11 的依赖,因为这个类似乎已在 Java 9 中删除。
我尝试只安装 openjdk-8,然后从源代码构建 icedtea。尽管如此,当我完成时,firefox 没有检测到它(可能缺少某些命令)。
任何的想法?
此外,在这些命令的输出下方找到(根据您的回答尝试安装后):
roman@roman-desktop:~$ update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
roman@roman-desktop:~$ which javaws
/usr/bin/javaws
Run Code Online (Sandbox Code Playgroud)
经过反复试验,我只找到了一个有用的解决方案 - 我们需要使用以下命令从以前的 Ubuntu 16.04 LTS 手动安装普通的 OpenJDK 8。通常不推荐这样做,但我们没有其他方法可以产生积极的结果。
所以安装命令如下(我们删除现有的 OpenJDK,然后手动安装 deb-packages):
sudo apt purge oracle-java11-* -y
sudo apt purge *openjdk* -y
sudo apt autoremove --purge -y
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u272-b10-0ubuntu1~16.04_amd64.deb
sudo apt install -y ./openjdk-8-jre-headless_8u222-b10-1ubuntu1~16.04.1_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
sudo apt install -y ./libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre_8u272-b10-0ubuntu1~16.04_amd64.deb
sudo apt install -y ./openjdk-8-jre_8u222-b10-1ubuntu1~16.04.1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/i/icedtea-web/icedtea-netx-common_1.6.2-3ubuntu1_all.deb
sudo apt install -y ./icedtea-netx-common_1.6.2-3ubuntu1_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/i/icedtea-web/icedtea-netx_1.6.2-3ubuntu1_amd64.deb
sudo apt install -y ./icedtea-netx_1.6.2-3ubuntu1_amd64.deb
Run Code Online (Sandbox Code Playgroud)
我们还需要使用下面的单个长命令来固定/保持此类包的版本:
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-java8
Package: icedtea-netx
Pin: version 1.6.2-3ubuntu1
Pin-Priority: 1337
Package: icedtea-netx-common
Pin: version 1.6.2-3ubuntu1
Pin-Priority: 1337
Package: openjdk-8-jre
Pin: version 8u272-b10-0ubuntu1~16.04
Pin-Priority: 1337
Package: openjdk-8-jre-headless
Pin: version 8u272-b10-0ubuntu1~16.04
Pin-Priority: 1337
EOF
Run Code Online (Sandbox Code Playgroud)
然后应用程序将运行
javaws StartProRealTime.jnlp
Run Code Online (Sandbox Code Playgroud)
注意:安装 Oracle Java 11 或 12 也无济于事。
| 归档时间: |
|
| 查看次数: |
34497 次 |
| 最近记录: |