我下载了.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)
答案 0 :(得分:5)
堆栈跟踪与Bug ID 6533653和Bug 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>
第三方库可以在类路径中找到许可证信息,不会再出现错误!