Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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.lang.SecurityException:class";XYZ"';的签名者信息与同一包中其他类的签名者信息不匹配_Java_Applet_Securityexception - Fatal编程技术网

java.lang.SecurityException:class";XYZ"';的签名者信息与同一包中其他类的签名者信息不匹配

java.lang.SecurityException:class";XYZ"';的签名者信息与同一包中其他类的签名者信息不匹配,java,applet,securityexception,Java,Applet,Securityexception,我有一个在浏览器中运行的小程序,它是从Javascript调用的。有两个类:PortalLauncher和ParamSplitter,它们在默认包中。Javascript调用PortalLauncher中的方法,PortalLauncher反过来调用ParamSplitter中的函数。小程序位于已签名的jar中 这在大多数情况下都有效。然而,一些用户有时会遇到问题。在一天中的某个时间(即不是首次访问时),会引发以下异常: java.lang.SecurityException: class "P

我有一个在浏览器中运行的小程序,它是从Javascript调用的。有两个类:PortalLauncher和ParamSplitter,它们在默认包中。Javascript调用PortalLauncher中的方法,PortalLauncher反过来调用ParamSplitter中的函数。小程序位于已签名的jar中

这在大多数情况下都有效。然而,一些用户有时会遇到问题。在一天中的某个时间(即不是首次访问时),会引发以下异常:

java.lang.SecurityException: class "ParamSplitter"'s signer information does not
    match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(Unknown Source)
    at java.lang.ClassLoader.preDefineClass(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at sun.applet.AppletClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at PortalLauncher.openFile(PortalLauncher.java:313)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
    at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
    at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
    at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
java.lang.Exception: java.lang.SecurityException: class "ParamSplitter"'s signer
    information does not match signer information of other classes in the same package
    at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
    at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.com.DispatchImpl.invoke(Unknown Source)

有人能解释一下这个异常的含义和可能的原因吗?大约有800个用户拥有此小程序,但只有一个小程序受到影响,即使是那些偶尔有问题的用户。

这意味着在同一JVM中,从其他JAR加载的其他类也在默认包中进行了不同的签名(或者可能没有签名)

如果我正确地解释了您的问题,您的小程序本身只有一个jar,所以它一定是来自其他地方的jar;只有一些用户有。 我首先想到的可能是运行在另一个选项卡中的applet的jar(可以使用相同的jvm实例)。但是其他小程序应该使用单独的类加载器,所以它们不应该像那样冲突。 更有可能的是,他们在jvm的引导类路径中有一个jar,在根包中也有一个类

无论哪种方式,解决方案/解决方案都不是使用默认包,而是使用您自己的包。这样可以避免与另一个罐子碰撞