2014-11-16 43 views
3

the ASM FAQ,得到例如ASM的代碼,我應該使用ASMifier類,像這樣:ASMifier類從ASM缺少3.3.1

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是否搞亂了包裝(儘管他們的bug追蹤器什麼都沒有顯示)?還有別的嗎?

回答

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