0

我正在使用 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)

请帮忙~

4

1 回答 1

1

嗯,我得到了我的答案。这是因为注入的类是由引导类加载器加载的,所以注入的代码不能调用“CopyOfsssss”中的方法。参考这篇文章。解决方案是在 jvm 参数中添加“-Xbootclasspath/a:/path/yourclass.lib”。注意“Xbootclasspath”后面的“/a”表示追加。

于 2012-10-29T07:03:15.707 回答