Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
调用使用Java ASM添加的方法时发生NoClassDefFoundError错误_Java_Java Bytecode Asm - Fatal编程技术网

调用使用Java ASM添加的方法时发生NoClassDefFoundError错误

调用使用Java ASM添加的方法时发生NoClassDefFoundError错误,java,java-bytecode-asm,Java,Java Bytecode Asm,我正在使用ASM向方法注入代码: @Override public void visitCode() { visitMethodInsn(Opcodes.INVOKESTATIC, "sssss/CopyOfsss", "foo", "()V"); super.visitCode(); } Exception in thread "main" java.lang.NoClassDefFoundError: sssss/CopyOfss

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

请帮忙~

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

请先阅读文档或手册。这对人没有帮助!请你想一想在哪里读,读哪一章好吗?如果我将该类更改为“java.land.System”并调用nanoTime,它就会工作。
NoClassDefFoundError
(大致上)意味着该类在编译时存在,但在运行时不存在-您可能有类路径问题或错误的JAR文件吗?正如您在上面看到的,“ssss/copyofss”是主类。它必须存在~这表明它可能是类加载器问题?如果子类加载器加载了
CopyOfssss
,调用了其父类加载器加载的类,然后该类尝试静态回调
CopyOfssss
,则它将失败(子类CL可以看到父类加载的类,但反之亦然)。