Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 小程序ClassNotFoundException使用认证密钥和所有权限对jar进行签名后出现异常_Java_Applet_Java 7_Classnotfoundexception - Fatal编程技术网

Java 小程序ClassNotFoundException使用认证密钥和所有权限对jar进行签名后出现异常

Java 小程序ClassNotFoundException使用认证密钥和所有权限对jar进行签名后出现异常,java,applet,java-7,classnotfoundexception,Java,Applet,Java 7,Classnotfoundexception,我有Java7更新45。我正在测试一个打包在jar文件中的小测试小程序,我试图通过HTML页面加载该文件,如下所示: jar文件清单具有Permission属性,其值为all permissions。当我用认证密钥对jar文件签名时,我得到了ClassNotFoundException。查看tomcat访问日志以及Java控制台,我看到SmallApplet类是从web应用程序URL加载的 network: Connecting http://xxxxxx:8085/testappletsign

我有Java7更新45。我正在测试一个打包在jar文件中的小测试小程序,我试图通过HTML页面加载该文件,如下所示:

jar文件清单具有Permission属性,其值为all permissions。当我用认证密钥对jar文件签名时,我得到了ClassNotFoundException。查看tomcat访问日志以及Java控制台,我看到SmallApplet类是从web应用程序URL加载的

network: Connecting http://xxxxxx:8085/testappletsigning/SmallApplet.class with proxy=DIRECT
然后是例外

java.lang.ClassNotFoundException: SmallApplet
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
basic: load: class SmallApplet not found
如果我使用自签名并将其作为受信任证书导入,则异常将消失

我可以使用认证密钥对jar进行签名的唯一方法似乎是在jar清单和小程序标记中使用沙盒权限


这种行为有什么解释吗?

OP-我对一个带有签名的.jar也有类似的问题。在过去的几个月里,java安全性已经成为一个主要的PITA,所有的事情都需要完全正确。在我的例子中,我有很多.jar文件,有些文件中有签名,有些没有。我为我的域创建了一个代码签名证书,然后编写了一个.bat文件来删除META-INF文件夹,该文件夹包含清单文件和.class文件的签名,重新包装这些文件,然后对它们进行签名。除非我使用jar umf change.txt添加下面的行,否则我的代码将无法工作,change.txt是我在下面列出的五行代码

您可能已经测试过的第一件事,但我要说的是,您需要信任证书

但我认为您的问题是,您需要在签署清单文件之前向其添加额外的行!。我将这些行添加到我的清单中,使用jarsigner对其进行签名,然后工作正常

Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: <my app name>
我不是Java程序员,所以我不能完全100%确定为什么需要每一个。但据我所知,Java安全性知道您从何处调用.jar文件,如果外部有类,它将不会调用它,因为它存在于.jar之外。通过添加codebase参数,它表示信任任何东西。您可以将其更改为特定的web地址,如http/https://以更具体地锁定它


希望这有帮助

在从一个代码签名证书切换到另一个来自不同CA的代码签名证书时,我遇到了类似的问题。我用新证书和新证书签署了完全相同的jar 加载小程序时,我得到一个ClassNotFoundException

清单包含以下与安全相关的属性:

Application-Name: <app name>
Permissions: all-permissions
Codebase: *

如果我使用自签名并将其作为受信任证书导入,则异常将消失。这是非常奇怪的,我本来也希望有同样的行为。请检查,如果找不到类似的内容,请提交一份新报告。不幸的是,这并不能解决问题。行为保持不变。哇。。。。那太糟糕了。如果您将Java版本降级为7u11之类的早期版本,我假设这是正确的?7u45中的安全更新使其难以启动。
Trusted-Library: true