1

我正在尝试启动位于http://gparyani.com/beatbox.jnlp的 JNLP ,但是当我尝试这样做时,我在内部类中得到了 NullPointerException:

java.lang.NullPointerException
    at com.sun.deploy.security.SandboxSecurity.showSandboxDialog(Unknown Source)
    at com.sun.deploy.security.SandboxSecurity.checkSignedSandboxSecurity(Unknown Source)
    at com.sun.deploy.security.SandboxSecurity.isPermissionGranted(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.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.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

这是 JNLP:

<jnlp spec="1.0+" codebase="http://gparyani.com/">
  <information>
    <title>BeatBox</title>
    <vendor>Gaurav Paryani, Nick Hoang, and Harrison Qi</vendor>
    <offline-allowed/>
  </information>
  <update check="background" policy="prompt-run"/>
  <resources>
    <j2se version="1.7+"/>
    <jar href="beatbox.jar" main="true"/>
  </resources>
  <application-desc main-class="com.gparyani.beatbox.GUIMaker"/>
</jnlp>

这里有什么问题?

4

2 回答 2

6

当然不是最有用的错误信息。

我能够通过修复代码库 URL 来克服它。您的实际代码托管在:

http://www.rohitleena.com/gparyani/

但是您的 JNLP 文件中的代码库是:

http://gparyani.com/

总之,修复是将 JNLP 文件中的 jnlp 元素修改为:

<jnlp spec="1.0+" codebase="http://www.rohitleena.com/gparyani/">

Janela将其检测为警告,这可能会帮助您在将来调试这些问题。

通过将代码库更改为第一个 URL,NullPointerException 消失了。我怀疑它正在尝试使用证书验证 URL,并且在尝试确定需要验证哪个 URL 时证书验证变得混乱。

修复此问题会通过 NullPointerException 并立即引发另一个异常,但这似乎是一个不同的问题(您的应用程序请求更改默认运行时处理程序而没有这样做的权限)。

于 2013-06-11T19:46:39.110 回答
0

不确定 Java 中的错误,在许多博客上都找到了此文本。我是如何解决这个问题的:我能够在 WinXP 机器中以相同的 Java 版本启动其他名为“WinXp-32bit-101”的 Jenkins 从节点。但是我为 Win7 机器创建的名为“win7-64bit - 113”的其他节点我无法在 Win7 机器上启动并出现相同的错误。我在 WinXp 机器上尝试了同样的启动并得到了同样的错误。我还尝试在 win7 机器上启动旧节点“WinXp-32bit-101”,它在那里工作。

这意味着错误与 Java 无关,即使 Windows 操作系统版本与两台机器上的错误相同。

解决方案:我只是比较了两个节点的配置差异,并删除了名称中的空格。从“win7-64bit-113”到“win7-64bit-113”

它奏效了。

这也将如何帮助其他人

于 2014-11-12T22:45:20.470 回答