首页 > Java > Java asm library针对Java8的补丁

Java asm library针对Java8的补丁

2014年4月26日 1,286 人浏览 发表评论 阅读评论

java asm library是一款比较不错的字节码解析和生成的库,应用比较广泛。其优点是,库小,轻量,速度快,效率高,功能也较强。
但是有个致命的问题,就是新版本的asm库不兼容老版本,这样很容易发生冲突,之前asm2升级到asm3时,就折腾了很久。
现在升到Java8以后,我用的asm3出问题了,会有异常,大概原因是 asm3无法解析Java8的含有InvokeDynamic指令的class文件。
升级到最新版以后,asm5本身没有问题了,但是因为它不兼容老版本,所以依赖asm3的库,如struts2就有可能出问题。
这里有个无法解决的库冲突,要解决只能修改其中一方,重新编译。
聪明的库,如spring的解决办法是,把asm改个package,当作自己的东西,而不是一个外部库,spring里asm在core的module里,package是org.springframework.asm。
我这里选择了另外一种方法,继续用asm3,然后修改它的代码,使其处理Java8的class不出错,只是不出错,无法解析Java8的InvokeDynamic指令。
asm的下载地址点这里,我使用了3.3.1的debug版本。
这里直接放出修改后的asm-debug-all-3.3.1-java8.jar,直接jar包,里面有个modified-src文件夹,是2个修改了的java文件,你可以比对原文件来了解我做的修改。这是debug版本,需要release版本的可以自己编译,或者直接把我编译的那两个class文件替换到release版本里。

分类: Java 标签: ,
1 Star2 Stars3 Stars4 Stars5 Stars 来给这篇文章评分吧!
Loading ... Loading ...
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.