我正在使用ASM为代码注入代码:
@Override
public void visitCode() {
visitMethodInsn(Opcodes.INVOKESTATIC, "sssss/CopyOfsss", "foo", "()V");
super.visitCode();
}
Exception in thread "main" java.lang.NoClassDefFoundError: sssss/CopyOfsss
at java.util.regex.Pattern$Node.match(Pattern.java)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)
at java.util.regex.Pattern$Curly.match0(Pattern.java:3760)
at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
at java.util.regex.Matcher.match(Matcher.java:1127)
at java.util.regex.Matcher.matches(Matcher.java:502)
at sssss.CopyOfsss.main(CopyOfsss.java:26)
请帮忙〜
答案 0 :(得分:0)
好吧,我得到了答案。这是因为注入的类由引导类加载器加载,因此注入的代码不能调用“CopyOfsssss”中的方法。请参阅this article。解决方案是将“-Xbootclasspath / a:/path/yourclass.lib”添加到jvm参数中。注意“Xbootclasspath”之后的“/ a”表示附加。