Java ASM java.lang.NoSuchMethodError

Java ASM java.lang.NoSuchMethodError

我是 Java ASM 的新手。我正在尝试使用 Java 代理和 ASM 检测方法。但是,我收到如下错误:

Exception in thread "main" java.lang.NoSuchMethodError: java.io.FileOutputStream.<init>(Ljava/io/FileOutputStream;)V
    at java.io.FileOutputStream.close(FileOutputStream.java:354)
    at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:320)
    at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
    at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
    at WriteToFileExample.useFileWriter(WriteToFileExample.java:60)
    at WriteToFileExample.main(WriteToFileExample.java:30)

我正在使用 asm-6.0.

我尝试编写了简单的测试代码并且它有效。但是,对于某些 classes 中的某些方法,它不起作用。我不懂为什么! ClassVisitor 正在访问 class,然后对于所有方法,它都接受 MethodVisitor。如果 class 中不存在这样的方法,它如何接受访问者以及为什么抛出异常?

我想通了。 FileOutputStream$1 是 FileOutputStram 的内部 class。使用 java 代理,我没有获得有关 FileOutputStream 的信息,而是获得有关 FileOutputStream$1 的信息。但是,当访问方法时,它说没有找到名为 init 的方法,对于其他一些方法也是如此,因为 FileOutputStream$1 中没有 init 方法。 Init 方法在 FileOutputStream 中。我将 java 代理代码更改为不处理内部 class 但实际的 FileOutputStream class 现在没问题了。