Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小程序类装入器在jar中找不到一个类_Java_Applet_Classloader_Noclassdeffounderror - Fatal编程技术网

Java 小程序类装入器在jar中找不到一个类

Java 小程序类装入器在jar中找不到一个类,java,applet,classloader,noclassdeffounderror,Java,Applet,Classloader,Noclassdeffounderror,我得到了那份工作。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$AppletExecutionRu

我得到了那份工作。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 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>
但我认为它们不适用于我的情况。SomeClass和MyApplet位于同一个jar中,页面正在本地访问

Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class
从HTTPS服务器检索jar文件时似乎存在连接问题

我不知道您运行的是什么版本的Java,但是您可以检查与您的问题相关的缺陷的原因

如果这不是问题所在,那么请确保在下载JAR文件时有足够的缓存,否则它将无法启动。不幸的是,这不是代码问题

更新您的班级是否有机会访问任何远程服务器或数据库

异常清楚地表明存在被拒绝的
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)
请记住,小程序就像Flash对象:

  • 它们都是从客户端下载和运行的
唯一的区别是小程序的设计有很多访问控制规则,例如,它不能连接到隐藏在DMZ公司(非军事化区域)后面的服务器,等等

如果是这样,我建议您找到一种在applet之外检索数据的方法(试试servlet?)

更新2JVM似乎找不到与已签名jar匹配的可信证书

  • 由于您的jar文件是签名的请确保jar文件可以指向您的可信证书(请记住,它必须是可信的)
  • 更多信息,请查看:和

  • 可能与此有关。即,一个或多个JAR定义/期望提供程序。有时间时进行调查。

    如果是连接问题,异常消息中的URL不应该改为https://myserver/mycontext/applets/myApplet\uu 0.0.1177.jar吗?插件似乎正在代码库中查找类文件本身。SomeClass没有访问任何远程服务器或数据库。但是,它正在从本地文件系统读取文件。我已经用一个特权电话把它包起来了。我也在罐子上签了名。我认为Java浏览器插件正在进行特权访问。感谢您迄今为止的帮助,但问题仍然没有解决。jar的证书已经被永久信任,并且在浏览器和Java插件的证书存储中。哪个浏览器是客户端浏览器?因为客户端浏览器似乎无法访问受信任的证书。是的,客户端浏览器。您如何判断客户端浏览器无法访问证书?我认为发生的情况是Java浏览器插件无法从myApplet_uuu0.0.1177.jar加载该类,因此在codebase文件夹中查找该类。现在的问题是,它如何能够加载MyApplet而不是SomeClass?客户端使用的是什么版本的Java?您说过该页面正在本地访问,但在日志中我看到了“myserver”。这是本地主机的名称吗?另外,您使用什么浏览器进行测试?Internet explorer、firefox?1.6更新10是使用的Java版本。上面堆栈跟踪中的“myserver”只是一个示例。这不是本地主机。浏览器是Firefox。上面显示的小程序元素是无效的HTML。在考虑它可能失败的其他原因之前,最好使用验证服务检查它。在“class=“invisible”上,不要错误地指定宽度或高度<10,否则常见浏览器插件可能会在没有警告的情况下删除小程序。