IcedTea 1.8版无法打开任何JNLP文件

时间:2019-06-06 08:47:08

标签: java applet java-web-start jnlp icedtea

当前,我无法在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

2 个答案:

答案 0 :(得分:1)

我一直面临着同样的问题。 我通过首先删除Java的现有版本(更高版本)来解决它。然后,安装open-JDK8。之后,我安装了冰茶小程序所需的依赖项。

  def start(_type, _args) do
    [
      Alerts.Repo,
      AlertsWeb.Endpoint |> supervisor([]),
      if(System.get_env() != :test, do: Alerts.Scheduler),
      Alerts.VersionSupervisor |> supervisor([])
    ]
    |> Supervisor.start_link(strategy: :one_for_one, name: Alerts.Supervisor)
  end

在那之后,我跟随了这个话题 https://askubuntu.com/questions/1134881/icedtea-8-cannot-run-any-jnlp-application-maybe-due-to-openjdk-11

某些链接在该线程中不起作用。因此,首先,您需要安装Open JDK 8。

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

验证已安装的Java版本。

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

如果未使用正确版本的Java,请使用Alternatives命令进行切换

java -version

现在,您可以返回到我引用的第一个线程。运行链接。如果它们已经安装,那么这不是问题。

之后,您可以转到小程序的目录并运行

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

参考:

  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

答案 1 :(得分:1)

显然,IcedTea不适用于Java11。有三种选择:

  1. 使用JNLP,小程序,JWS等停止。 Oracle或OpenJDK不再支持它们。 Oracle建议的许多用例替代方法是构建和分发使用jlink创建的可执行文件。

  2. 降级到OpenJDK8。请参见@ Sankalp1999的answer

    这仅适用于2021年4月,届时OpenJDK 8的Ubuntu软件包将达到使用寿命,并停止获取安全更新。您可能可以找到一个Java供应商,该供应商将向后移植安全补丁,但(IMO)不太可能通过Canonical信息库获得它们。

  3. 切换到OpenWebstart