2

難問です!

JAR にアプレットがあります。JAR が署名されると (自己署名であろうと DigiCert 証明書であろうとClassNotFoundException)、メイン アプレット クラスで が取得されます。アプレットに署名しないと、問題なくロードされます-(SecurityExceptionコードが署名されていないため、期待されるものはカウントされません)。

しかし、署名済みの JAR を解凍すると、すべてが本来あるべき場所にあることがわかります。

最も奇妙な部分は、先週までセットアップがうまく機能していたことです。同じメイン クラス、自己署名、JS/HTML などの同じデプロイ ミックス。

何かご意見は?

エラーメッセージは次のとおりです。

java.lang.ClassNotFoundException: com.spraklab.ilos.applet.Applet
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:195)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:690)
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3045)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
at java.lang.Thread.run(Thread.java:680)
4

2 に答える 2

2

上記のコードでは、安全なアプレットクラスローダーを切り替えようとしています。これは、Java1.2以降では許可されていません。

于 2012-08-28T12:18:54.470 に答える
0

短いバージョン:JAR名にハイフンはありません!

ドラマチックなストーリー:ついに!問題が発見されてから何日も経ちます。アプレットは、署名されていない場合は正常にロードされ、署名されている場合はClassNotFoundExceptionが発生します。クラスローダーの切り替えに関する回答から、コードに変更があったと思いました。そこで、コードを最小限に抑えました。ただし、ブラウザを常に再起動してキャッシュなどを空にする必要がないように、Chromeのシークレットモードを使用しました。コードを再構築しました。そして、最終的にはすべてが順調でした。いいえ!その後、シークレットモード以外でテストしたところ、再びエラーが発生しました。

では、違いは何でしたか?サーバーログを調べると、通常モードのときにJarがサーバーから要求されていないことがわかりました。コードを同じような埋め込みコードを持つ別のアプリともう一度比較したところ、違いは1つだけでした。JAR名のアンダースコアの代わりにハイフンを使用していました。これは許可されるべきであり、これまでは問題なく機能していました。約2週間前。しかし、約2週間前にJavaアップデートもありませんでした...?!?!

于 2012-08-30T22:52:42.130 に答える