簡體   English   中英

IcedTea 1.8 版無法打開任何 JNLP 文件

[英]IcedTea version 1.8 is unable to open any JNLP file

目前我無法在 Ubuntu 18.04 上打開 .jnlp 文件(TopCoder Arena)。 它給出了一條錯誤信息

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)
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:945)

早些時候它工作正常。 但我想,最近的更新是問題所在。 我已經嘗試了這兩個來源https://forums.linuxmint.com/viewtopic.php?t=294555和 AskUbuntu 的解決方案。 直到現在我無法找到啟動競技場的方法。 我也嘗試過此線程https://apps.topcoder.com/forums/?module=Thread&threadID=618387&start=0 中的解決方案,但它們都不起作用。 我到目前為止嘗試過的解決方案:
1.清除應用程序緩存。
2.從Java 11降級到8
我無法將 IcedTea 降級到 1.6 版,因為 1.6 版在我的系統上不起作用。

這是錯誤消息:

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)
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:945)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:576)
    ... 1 more
Caused by: javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.SAXParserFactory cannot be created
    at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:305)
    at java.xml/javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:261)
    at java.xml/javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:147)
    at com.topcoder.client.ui.impl.XMLUIManager.<init>(Unknown Source)
    at com.topcoder.client.ui.UIFactory.getUIManager(Unknown Source)
    at com.topcoder.client.ui.UIFactory.getUIManagerFromResource(Unknown Source)
    at com.topcoder.client.contestApplet.common.LocalPreferences.getAllUIManagers(Unknown Source)
    at com.topcoder.client.contestApplet.ContestApplet.<init>(Unknown Source)
    at com.topcoder.client.contestApplet.runner.generic.main(Unknown Source)
    ... 6 more
Caused by: java.lang.RuntimeException: Provider for class javax.xml.parsers.SAXParserFactory cannot be created
    at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:302)
    ... 14 more
Caused by: java.util.ServiceConfigurationError: javax.xml.parsers.SAXParserFactory: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
    at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:588)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1211)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator$1.run(ServiceLoader.java:1267)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator$1.run(ServiceLoader.java:1266)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1269)
    at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
    at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
    at java.xml/javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:287)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.xml/javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:283)
    ... 14 more

顯然,IcedTea 不適用於 Java 11。有以下三種選擇:

  1. 停止使用 JNLP、applet、JWS 等。 Oracle 或 OpenJDK 不再支持它們。 Oracle 推薦的許多用例的替代方法是構建和分發使用 jlink 創建的可執行文件。

  2. 降級到 OpenJDK 8。請參閱 @Sankalp1999 的回答

    這只會在 2021 年 4 月之前可行,屆時 OpenJDK 8 的 Ubuntu 軟件包將終止並停止獲取安全更新。 您可能會找到將向后移植安全補丁的 Java 供應商,但 (IMO) 您不太可能通過 Canonical 存儲庫獲取它們。

  3. 切換到OpenWebstart

我一直面臨着同樣的問題。 我通過首先刪除 Java 的現有版本(更高版本)來解決它。 然后,安裝 open-JDK 8。之后,我安裝了 iced-tea 小程序所需的依賴項。

sudo apt purge oracle-java11-* -y
sudo apt purge *openjdk* -y
sudo apt autoremove --purge -y

在那之后,我跟着這個線程https://askubuntu.com/questions/1134881/icedtea-8-cannot-run-any-jnlp-application-maybe-due-to-openjdk-11

某些鏈接在該線程中不起作用。 因此,首先,您需要安裝 Open JDK 8。

sudo apt-get update
sudo apt-get install openjdk-8-jdk

驗證您安裝的 java 的版本。

java -version

如果沒有使用正確的 Java 版本,請使用替代命令來切換它

sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_version/bin/java

現在,您可以返回到我引用的第一個線程。 運行鏈接。 如果它們已經安裝,那么這不是問題。

之后就可以到小程序所在的目錄下運行

javaws ContestAppletProd.jnlp

參考:

  1. https://askubuntu.com/questions/1134881/icedtea-8-cannot-run-any-jnlp-application-maybe-due-to-openjdk-11
  2. https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOpenJdkDeb.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM