Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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
如何分析致命的javaagent错误?_Java_Instrumentation_Javaagents - Fatal编程技术网

如何分析致命的javaagent错误?

如何分析致命的javaagent错误?,java,instrumentation,javaagents,Java,Instrumentation,Javaagents,我试图使用java.lang.instrument API向java.lang.Object构造函数添加一个静态方法调用。我知道我的基本知识是正确的,因为如果我调用System.gc()方法,它就会工作。我通过运行-verbosegc来验证这一点,无论是否使用该工具。如果我在自己的包中将方法调用更改为静态类/方法,则会出现致命错误: 本机方法中线程“main”出现异常致命错误:处理-javaagent失败 工作目录中没有创建转储文件,因此我发现很难找出问题所在。其他资料: 我确保在转换之前将静

我试图使用java.lang.instrument API向java.lang.Object构造函数添加一个静态方法调用。我知道我的基本知识是正确的,因为如果我调用System.gc()方法,它就会工作。我通过运行-verbosegc来验证这一点,无论是否使用该工具。如果我在自己的包中将方法调用更改为静态类/方法,则会出现致命错误:

本机方法中线程“main”出现异常致命错误:处理-javaagent失败

工作目录中没有创建转储文件,因此我发现很难找出问题所在。其他资料:

  • 我确保在转换之前将静态方法类加载到premain方法中
  • 静态方法调用不会导致创建新对象
  • 最后加载的类是InterruptedIOException,尽管我认为这只是一个副作用

提前感谢。

是的,正如@barry在他的评论中所指出的,您必须将
引导类路径定义添加到Java代理的清单中。对我来说,我在代理中使用javassist创建字节码,因此我的清单如下所示:

Manifest-Version: 1.0
Premain-Class: com.company.agent.Agent
Agent-Class: com.company.agent.Agent
Boot-Class-Path: javassist-3.18.2-GA.jar agent.jar

我的应用程序的所有jar文件都与javassist和代理jar位于同一个lib目录中。在类路径上的所有内容都在同一个文件夹中的情况下,它可以正常工作。

结果是,我必须在代理jar清单中的引导类路径中添加字节码生成lib,如本文所述