Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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代理时的java.lang.SecurityException_Java_Agent - Fatal编程技术网

注入java代理时的java.lang.SecurityException

注入java代理时的java.lang.SecurityException,java,agent,Java,Agent,我正在尝试创建动态java代理,但在加载代理时会引发以下错误: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:165) at jdk.attach/co

我正在尝试创建动态java代理,但在加载代理时会引发以下错误:

com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize
    at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:165)
    at jdk.attach/com.sun.tools.attach.VirtualMachine.loadAgent(VirtualMachine.java:538)
    at injector.main(injector.java:20)
这是目标应用程序上显示的错误:

java.lang.SecurityException: class "agent"'s signer information does not match signer information of other classes in the same package
  at java.base/java.lang.ClassLoader.checkCerts(ClassLoader.java:1151)
  at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:906)
  at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1015)
  at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
  at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
  at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
  at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:431)
  at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:535)
代理没有可能触发错误的代码,因为现在它是用于测试的单个System.out.println语句。我使用以下代码注入代理:

VirtualMachine vm = VirtualMachine.attach(vmd);
vm.loadAgent("myagentpath");
vm.detach();
目标应用程序正在运行java的正态分布。我不认为这是我的代码的问题。有人知道这是什么原因吗

签名者信息与其他类的签名者信息不匹配 一模一样


当从类路径上的不同JAR文件加载属于同一个包的类时,就会发生这种情况,并且这些JAR文件具有使用不同证书签名的签名——或者,可能更常见的情况是,至少有一个签名,而另一个或多个未签名。因此,要么确保所有JAR(或者至少那些包含来自相同包的类的JAR)都使用相同的证书进行签名,要么从带有重叠包的JAR文件清单中删除签名。

是的,我更改了包,出于某种原因,它现在可以工作了