AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1134881
Accepted
Roman Rdgz
Roman Rdgz
Asked: 2019-04-19 01:44:33 +0800 CST2019-04-19 01:44:33 +0800 CST 2019-04-19 01:44:33 +0800 CST

IcedTea-8 无法运行任何 jnlp 应用程序(可能是由于 openjdk-11?)

  • 772

我在 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

虽然预计将依赖于 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)

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
apt java openjdk
  • 9 9 个回答
  • 44411 Views

9 个回答

  • Voted
  1. Best Answer
    N0rbert
    2019-04-19T09:40:32+08:002019-04-19T09:40:32+08:00

    经过反复试验,我发现只有一个有用的解决方案——我们需要使用以下命令从以前的 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
    

    我们还需要使用下面的单个长命令来固定/保存此类包的版本:

    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
    

    然后应用程序将运行

    javaws StartProRealTime.jnlp
    

    注意:安装 Oracle Java 11 或 12 也无济于事。

    • 7
  2. deandrade87
    2019-10-23T09:33:28+08:002019-10-23T09:33:28+08:00

    在我的系统上,我发现它javaws仍在尝试使用 jre-11(它不起作用),因为default-jre-headless(的依赖关系icedtea-netx)创建了一个链接(未被 修改update-java-alternatives)。

    $ javaws
    selected jre: /usr/lib/jvm/default-java
    

    我必须手动更改该符号以指向 jre-8 版本才能javaws再次运行。

    • 4
  3. kovivox
    2019-05-01T23:21:07+08:002019-05-01T23:21:07+08:00

    这显然与 Oracle 的参考有关。我很久以前卸载了Oracle java。(我还没有找到解决方案。)我在使用 Unity 的 Ubuntu 19.04 上。

    请参阅以下内容,特别是“选定的 jre”

    $ 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
    

    $ java -version
    
    openjdk version "11.0.3" 2019-04-16
    OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu1)
    OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu1, mixed mode, sharing)
    

    $ which javaws    
    /usr/bin/javaws
    

    $ javaws    
    selected jre: /usr/lib/jvm/java-8-oracle
    
    thread 'main' panicked at 'Error spawning JVM process, java executable: [/usr/lib/jvm/java-8-oracle], arguments: [["-splash:/usr/share/icedtea-web/javaws_splash.png", "-Xbootclasspath/a:/usr/share/icedtea-web/javaws.jar:/usr/share/java/js.jar:/usr/share/java/tagsoup.jar:/usr/lib/jvm/java-8-oracle/lib/ext/nashorn.jar:", "-classpath", "/usr/lib/jvm/java-8-oracle/lib/rt.jar:/usr/lib/jvm/java-8-oracle/lib/ext/jfxrt.jar:", "-Dicedtea-web.bin.name=javaws", "-Dicedtea-web.bin.location=/usr/lib/icedtea-web/bin/javaws", "net.sourceforge.jnlp.runtime.Boot"]]', src/os_access.rs:36:19
    note: Run with `RUST_BACKTRACE=1` for a backtrace
    
    • 1
  4. kovivox
    2019-05-02T09:57:27+08:002019-05-02T09:57:27+08:00

    我能够设置默认的 java-8 或 java-11。


    $ sudo update-java-alternatives --jre --set java-1.8.0-openjdk-amd64
    $ sudo update-java-alternatives --jre-headless --set java-1.8.0-openjdk-amd64
    $ sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
    update-alternatives: error: no alternatives for appletviewer
    update-alternatives: error: no alternatives for mozilla-javaplugin.so
    update-java-alternatives: jdk alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
    update-java-alternatives: jdk alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole
    update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
    

    $ sudo update-java-alternatives --jre --set java-1.11.0-openjdk-amd64
    $ sudo update-java-alternatives --jre-headless --set java-1.11.0-openjdk-amd64
    $ sudo update-java-alternatives --set java-1.11.0-openjdk-amd64
    update-alternatives: error: no alternatives for appletviewer
    update-alternatives: error: no alternatives for mozilla-javaplugin.so
    

    然后通过命令之一正确设置变量 JAVA_HOME


    $ export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
    $ export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
    $ echo $JAVA_HOME
    

    值得检查变量值。

    跑步时


     $ javaws filename.jnpl
    

    我收到了一些警告和回应,包括

    netx:无效的 jnlp 文件 /home/phobos/express.jnpl

    express.jnpl 是来自https://www.ariscommunity.com/aris-express/download的 ARIS express 建模工具

    各自的回应是


    $ javaws ~/express.jnpl
    selected jre: /usr/lib/jvm/java-8-openjdk-amd64/jre/
    
    (java:11196): dbind-WARNING **: 19:40:56.468: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
    netx: Invalid jnlp file /home/phobos/express.jnpl
    

    $ javaws ~/express.jnpl
    selected jre: /usr/lib/jvm/java-11-openjdk-amd64/
    WARNING: package javax.jnlp not in java.desktop
    netx: Invalid jnlp file /home/phobos/express.jnpl
    

    现在仍然需要找出 jnpl 文件或我的配置有什么问题。

    已解决 - 我使用了错误的文件名。它现在正在工作。


    $ javaws ~/express.jnlp
    selected jre: /usr/lib/jvm/java-8-openjdk-amd64/jre/
    selected jre: /usr/lib/jvm/java-8-openjdk-amd64/jre/
    Codebase matches codebase manifest attribute, and application is signed. Continuing. See: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html for details.
    Starting application [com.idsscheer.aris.expresslauncher.AExpressLauncher] ...
    May 02, 2019 6:36:28 PM com.idsscheer.aris.common.ADebug println
    INFO: [config] creating plugin.cfg from jar file
    

    使用当前版本 8u212 运行正常。仍然要使 JAVA_HOME 名称更改永久化。

    • 1
  5. nh2
    2019-11-03T18:14:50+08:002019-11-03T18:14:50+08:00

    我发现旧的 Oracle 安装继续设置环境变量:

    % env | grep oracle
    JAVA_HOME=/usr/lib/jvm/java-8-oracle
    J2REDIR=/usr/lib/jvm/java-8-oracle/jre
    DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
    J2SDKDIR=/usr/lib/jvm/java-8-oracle
    

    unset那些做出来的人javaws选择了非 Oracle JRE。

    • 1
  6. gzerone
    2021-03-25T17:42:17+08:002021-03-25T17:42:17+08:00

    同样的问题,我只是通过以下方式更改默认java:

    cd /usr/lib/jvm/
    rm default-java
    sudo ln -s java-1.8.0-openjdk-amd64 default-java   # need install openjdk-8-jdk
    
    javaws your.jnlp  # it works.
    
    • 1
  7. Santi La Ruina
    2019-11-20T08:13:42+08:002019-11-20T08:13:42+08:00

    我通过在 icedtea 控制面板中设置 jdk8 目录来解决这个问题。我打开控制面板,进入 JVM 设置并在字段中填写:

    /usr/lib/jvm/java-8-openjdk-amd64

    我正在运行 Ubuntu 18.04,并安装了 jdk11 和 jdk8。通常,java-default 链接到 jdk11,因此 icedtea 会由于某些类被删除而崩溃。

    • 0
  8. frank_108
    2022-04-26T00:12:27+08:002022-04-26T00:12:27+08:00

    在 Java11 上,jawaws不支持 Java 8。(我有 openjdk 但仍然无法使用它)
    一种方法是使用一些 docker 作为这个:
    https ://github.com/rvojcik/firefox-icedtea

    它在 docker 容器中运行 firefox 并打开 icedtea 以便从它的 url 使用 KVM 控制台为我制定。

    • 0
  9. Ghost
    2021-02-02T01:56:14+08:002021-02-02T01:56:14+08:00

    https://openwebstart.com/

    我不是一个极客,但由于以前的答案很老,我发布了新的答案

    OpenJDK 8/11 对我不起作用,我在 GitHub 中找到了相同问题的上述链接。我能够使用 openwebstart 从实验室实时打开 Jnlp 文件。

    注意:我的回答仅与实验室实时 Jnlp 文件有关,这是我第一次使用 JNLP 文件

    谢谢

    • -1

相关问题

  • 如何编写 shell 脚本来安装应用程序列表?

  • 如何查看存档中可用的软件包的所有版本?

  • 是否可以说出我安装的哪些软件包不在原版安装中?

  • 如何删除 PPA?

  • 使用 apt-get upgrade 时如何强制安装内核更新?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve