编程语言
首页 > 编程语言> > java-ASM 3.3.1中缺少ASMifier类

java-ASM 3.3.1中缺少ASMifier类

作者:互联网

根据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附带的.常见问题是否适用于较新版本,我应该使用其他说明吗? Fedora是否弄乱了包装(即使他们的bug跟踪器什么也没显示)?还有吗

解决方法:

浏览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

标签:java-bytecode-asm,fedora,java
来源: https://codeday.me/bug/20191121/2048739.html