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 のバグについてよくわからないので、多くのブログでこのテキストを見つけました。これをどのように解決したか: 同じ Java バージョンで、WinXP マシンで「WinXp-32bit-101」という名前の他の Jenkins スレーブ ノードを起動できました。しかし、「win7-64bit - 113」という名前で Win7 マシン用に作成した他のノードは、同じエラーで Win7 マシンで起動できません。WinXp マシンで同じ起動を試みましたが、同じエラーが発生しました。また、win7マシンで古いノード「WinXp-32bit-101」を起動してみましたが、そこで動作しました。

これは、両方のマシンで同じエラーとして Windows OS バージョンでさえ、Java ではエラーが発生しないことを意味します。

解決策: 両方のノードの構成の違いを比較し、名前のスペースを削除しました。「win7-64bit - 113」から「win7-64bit-113」へ

そしてそれはうまくいきました。

これが他の人にもどのように役立つか

于 2014-11-12T22:45:20.470 に答える