Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。
工具软件下载路径:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3
我比较喜欢直接使用.jar版本,直接在页面打开目标.class或者.jar包文件,即可直观的查看反编译后的源码,很强大
下载下来后双击就可以使用了,同样的jar,我们打开试试效果:
不再是ERROR了,同样在使用过程中可以总结一下它和jd-gui的区别:
1.查看jar包的时候,jd-gui是折叠的,而Luyten是展开的
2.以前在用jd-gui反编译的时候,泛型是会被擦除的,如:
List<Integer> list =newArrayList();
编译后会变成
List list =newArrayList();
因为泛型在编译期会被擦除,这个没毛病,但是Luyten反编译后的为什么没有被擦除呢?是因为jdk在编译过程中虽然擦除了泛型,但是还是通过注释对其进行了标记,如:
#4 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
这就解释的通为什么Luyten还是能够找回来没擦除之前的类型,毕竟能回归最原始的文件对程序员越有利嘛~