[英]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。有以下三种选择:
停止使用 JNLP、applet、JWS 等。 Oracle 或 OpenJDK 不再支持它们。 Oracle 推荐的许多用例的替代方法是构建和分发使用 jlink 创建的可执行文件。
降级到 OpenJDK 8。请参阅 @Sankalp1999 的回答。
这只会在 2021 年 4 月之前可行,届时 OpenJDK 8 的 Ubuntu 软件包将终止并停止获取安全更新。 您可能会找到将向后移植安全补丁的 Java 供应商,但 (IMO) 您不太可能通过 Canonical 存储库获取它们。
切换到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
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.