Java Launch在第二次运行时失败:java.lang.NullPointerException

时间:2010-12-08 01:57:50

标签: java jnlp java-web-start

我下载了.jnlp文件并运行它。它运行正常。我关闭它并再次启动它,运行正常。

但是在第三次尝试时,它总是抛出java.lang.NullPointerException,应用程序将无法启动。

如果我重新启动计算机,它会再次运行。我该如何解决这个问题?

java.lang.NullPointerException
    at com.sun.javaws.security.SigningInfo.overlapSigners(Unknown Source)
    at com.sun.javaws.security.SigningInfo.getCertificates(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

2 个答案:

答案 0 :(得分:5)

堆栈跟踪与Bug ID 6533653Bug ID 6850598中的相同。根本原因似乎是JNLP中的空JAR。他们说已经分别在Java 1.6 update 2和Java 1.6 update 18中修复了它。

然而,最后一个bug中有一条评论抱怨说这个修补程序在1.6更新18中仍然不起作用,以及一个看起来很像你情况的描述:

  

在vm 6u18中,此错误未关闭。 您可以启动应用程序一次但是在出现以下异常后

java.lang.NullPointerException
    at com.sun.javaws.security.SigningInfo.overlapSigners(Unknown Source)
    at com.sun.javaws.security.SigningInfo.getCertificates(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
     

如果我从jnlp中删除空jar,一切正常。   请在发布前验证您的更正

因此,尝试从JNLP中删除空JAR并将其报告给JNLP作者。

答案 1 :(得分:1)

对于版本为1.6.0_18的用户,我们也看到了这个问题。

我看了一下我的jnlp文件中列出的jar,发现一个许可证罐跳出来作为一个没有类的jar的可能候选人。我用jar tf确认了这一点。

作为一个快速测试,我从jnlp文件中删除了jar,但我没有收到错误。但是,我需要第三方库的许可证罐。

我更新了我的构建文件,将许可证jar捆绑到我的应用程序jar中

<jar jarfile="${dist}/lib/${application}.jar">
    <zipgroupfileset dir="${extLib}" includes="runtime.jar" />
...
</jar>

第三方库可以在类路径中找到许可证信息,不会再出现错误!