Я новичок в Java ASM. Я пытаюсь использовать методы с использованием агента Java и ASM. Но я получаю сообщение об ошибке, как показано ниже:
Exception in thread "main" java.lang.NoSuchMethodError: java.io.FileOutputStream$1.<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.
Я попытался написать простой тестовый код, и он работает. Но для некоторых методов в некоторых классах это не работает. Я не понимаю почему! ClassVisitor посещает класс, а затем для всех методов принимает MethodVisitor. Если в классе нет такого метода, как он принимает посетителя и почему выдает исключение?
<init>
обозначает конструктор. Конечно, у оба класса есть конструкторы. В случае анонимного класса это конструктор, сгенерированный компилятором. Поскольку код работает для всех остальных, ваш агент должен изменить класс. - person Holger   schedule 14.11.2017