我得到了ff。偶尔出现在Java控制台中的错误:
Exception in thread "thread applet-my.package.MyApplet-10" java.lang.NoClassDefFoundError: another/package/SomeClass
at my.package.MyApplet.init(MyApplet.java:95)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: another.package.SomeClass
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 3 more
Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
我的applet标签如下:
<applet codebase="../../applets" code="my.package.MyApplet" class="invisible" id="myApplet">
<param value="value0" name="param0"/>
...
<param value="valueN" name="paramN" />
<param value="folder/myApplet__0.0.1177.jar,folder/commons-io-1.3.2__0.0.1177.jar,..." name="cache_archive"/>
<param value="0.0.1177.0,0.0.1177.0,...," name="cache_version"/>
</applet>
重要的是我强调“偶尔”这个词。有时applet会毫不费力地初始化。这也意味着,当浏览器重新启动时,问题就会消失。
我知道applet fails to load class from jar和Applet class loader cannot find a class in the applet's jar,但我认为它们不适用于我的情况。 SomeClass和MyApplet在同一个jar中,页面在本地访问。
答案 0 :(得分:1)
Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class
这看起来与从HTTPS服务器检索jar文件存在连接问题。
我不确切知道您运行的是哪个版本的Java,但是您可以检查与您的问题有关的缺陷的原因here。
如果这不是问题,那么请确保在下载时JAR文件有足够的缓存,否则无法启动。不幸的是,这不是代码问题。
UPDATE 您的班级SomeClass
是否有机会访问任何远程服务器或数据库?
该例外清楚地表明存在被拒绝的AccessControl
特权。
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
请记住,applet就像Flash Objects:
唯一不同的是,Applet设计了许多访问控制规则,例如,它不能连接到隐藏在公司DMZ(非军事区)后面的服务器等。
如果是这种情况,我建议您找到一种在applet之外检索数据的方法(尝试servlet?)
更新2 似乎JVM找不到与您签名的jar匹配的可信证书。
答案 1 :(得分:0)
可能与http://download.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html有关。即,一个或多个罐子定义/期望提供者。调查什么时候有空。