gpt4 book ai didi

java.lang.SecurityException : class "XYZ"'s signer information does not match signer information of other classes in the same package 错误

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:41 28 4
gpt4 key购买 nike

我有一个在浏览器中运行并从 Javascript 调用的小程序。有 2 个类:PortalLauncherParamSplitter,它们位于默认包中。 Javascript 调用 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,该 jar 在根包中也有一个类。

无论哪种方式,解决方案/变通方法就是不使用默认包,而是使用您自己的包。这样您就可以避免与另一个 jar 发生碰撞。

关于java.lang.SecurityException : class "XYZ"'s signer information does not match signer information of other classes in the same package 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1339787/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com