ASM 3.3.1中缺少ASMifier类

时间:2014-11-16 22:55:29

标签: java fedora java-bytecode-asm

根据the ASM FAQ,为了获得示例ASM代码,我应该使用ASMifier类,如下所示:

java -classpath "asm.jar;asm-util.jar" org.objectweb.asm.util.ASMifier org/domain/package/YourClass.class

但这让我错误:

Error: Could not find or load main class org.objectweb.asm.util.ASMifier

查看JAR文件,ASMifier类似乎缺失了,尽管它的辅助类存在:

./org/objectweb/asm/util/ASMifierClassVisitor.class
./org/objectweb/asm/util/ASMifierAnnotationVisitor.class
./org/objectweb/asm/util/ASMifierMethodVisitor.class
./org/objectweb/asm/util/ASMifierAbstractVisitor.class
./org/objectweb/asm/util/ASMifierFieldVisitor.class

这是由Fedora 20提供的ASM 3.3.1。是新版本的FAQ,我应该使用不同的指令吗? Fedora是否搞砸了包装(即使他们的错误跟踪器没有显示任何内容)?还有别的吗?

1 个答案:

答案 0 :(得分:3)

在浏览ASM的SVN存储库时,您可以阅读revision history of the ASMifier:它是formerly known as the ASMifierClassVisitor,它也是3.1.1版中此实用程序的名称。

ASM从未有过维护二进制甚至编译兼容性的声誉。因此,您可能会遇到一些问题,例如您在使用库的非出血边版本时所描述的问题。 (作者承诺在ASM的第四版之后对此进行改进。)但是,您或者您使用的库应始终将ASM重新打包到不同的命名空间中以避免此类问题。这甚至是recommended in the FAQ to using ASM

要运行您的示例,您必须使用:

java -classpath "asm.jar;asm-util.jar" \
    org.objectweb.asm.util.ASMifierClassVisitor \
    org/domain/package/YourClass.class