jar在使用javaagent运行时获取“java.lang.NoClassDefFoundError”
我正在尝试使用javaagent插入jar文件(main.jar)。jar使用BCEL。基本上,每当我在字节码中找到aload时,我都会尝试使用
if (opcode instanceof aload) {
iFactory.createInvoke("someclass", "fun", Type.VOID, new Type[]{}, Constants.INVOKESTATIC);
我的“someclass”类驻留在javaagent中。罐子
执行
java -javaagent:javaagent.jar -jar main.jar
或
java -javaagent:javaagent.jar -jar main.jar javaagent.jar
或者(我为我的“someclass”创建了一个单独的jar,名为someclasscontained.jar)
java -cp someclasscontained.jar -javaagent:javaagent.jar -jar main.jar
我越来越
Exception in thread "main" java.lang.NoClassDefFoundError: someclass
错误。我尝试了-bootclasspath/p选项,但仍然不起作用。有人有线索吗
(1)所有jar都位于同一文件夹中 2) 此问题可能类似于一个问题,但该问题的解决方案不正确/不令人满意,因此请不要将其标记为重复)
# 1 楼答案
如果在不同的jar文件中定义了someclass,则需要将其添加到代理jar清单文件中的引导类路径列表中: