获取有关使用 javaagent 运行"java.lang.NoClassDefFoundError"



我正在尝试使用bcel使用 javaagent.jar.jar 来启动一个jar文件( main.jar )。基本上,无论何时在字节码中找到任何ALOAD,我都尝试使用

在类" someclass"中插入静态函数的函数调用
if (opcode instanceof aload) {
 iFactory.createInvoke("someclass", "fun", Type.VOID, new Type[]{}, Constants.INVOKESTATIC);

我的" someclass"课程位于javaagent.jar

执行

java  -javaagent:javaagent.jar -jar main.jar

java  -javaagent:javaagent.jar -jar main.jar javaagent.jar

或(我为我的" someclass"创建了一个单独的罐子,称为 someclasscontained.jar

java -cp someclasscontained.jar  -javaagent:javaagent.jar -jar main.jar 

我得到

Exception in thread "main" java.lang.NoClassDefFoundError: someclass

错误。我尝试了 -bootClassPath/p 选项,但仍无法使用。有人有任何线索吗?

(1)所有罐子都位于同一文件夹中2)这个问题可能类似于一个问题,但解决方案对该问题不正确/令人满意,所以请不要重复)

如果在另一个JAR文件中定义了SomeClass,则需要将其添加到代理JAR清单中的boot-class-path列表中:

some.jar  -> contains someclass.class
javaagent.jar -> contains your instrumenting classes and MANIFEST.MF file
MANIFEST.MF file should contain line like
Boot-Class-Path: javaagent.jar some.jar

相关内容

  • 没有找到相关文章

最新更新