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

在上面的代码中,您尝试切换安全小程序类加载器。从 Java 1.2 开始,这是不允许的。

于 2012-08-28T12:18:54.470 回答
0

简短版本:JAR 名称中没有连字符!

戏剧性的故事:终于!发现问题后的许多工作日。未签名时小程序加载正常,签名时出现 ClassNotFoundException。关于类加载器切换的答案让我相信我的代码中发生了一些变化。所以我把我的代码精简到最低限度。但是为了避免一直重启浏览器并清空缓存等,我只是使用了 Chrome 的隐身模式。我重建了代码。最后一切都很好。不是!然后当我在隐身之外对其进行测试时,我再次遇到了错误。

So what was the difference? An examination of the server logs showed that the Jar simply wasn't being requested from the server when in regular mode! I compared my code once again against an different app with similar embed-code, and saw only one difference: I was using a hyphen in stead of an underscore in the JAR-name - which should be allowed, and which had worked fine up until about 2 weeks ago. But wasn't there also a Java update about 2 weeks ago ...?!?!

于 2012-08-30T22:52:42.130 回答