我现在由于项目的需要参考一套系统实现(是一套web应用程序,主要是servlet写的)的源码,以前那套系统只有.class文件,因此想反编译。用xjad等jad核心的反编译软件试过,但是其中有些关键步骤没有反编译出来,都是break MISSING_BLOCK_LABEL_123;这种。所以我决定用另一套不同于jad的反编译软件试试,听闻jode号称效果最好的反编译软件,所以就实验一下。结果发现好多文件都没法反编译,提示类似的如下错误:
Exception while decompiling:java.lang.NoClassDefFoundError: com.eshop.cart.servlet.CartInit
at jode.bytecode.ClassInfo.loadInfo(ClassInfo.java:631)
at jode.decompiler.ClassAnalyzer.<init>(ClassAnalyzer.java:86)
at jode.decompiler.ClassAnalyzer.<init>(ClassAnalyzer.java:123)
at jode.decompiler.Decompiler.decompile(Decompiler.java:191)
at jode.swingui.Main.run(Main.java:204)
at java.lang.Thread.run(Unknown Source)
我觉得这应该不是jode的问题,可能是我在jode中classpath的参数没有设置好,导致找不到类。我的整套web 应用在c:\eshop中,里面有com文件夹,放着class源码,有meta-inf,web-inf文件夹,其中web-inf里面的lib目录放着这套应用的全部需要的库文件(如spring、hibernate和一些加密的安全包)。
    有哪位大虾熟悉jode反编译的?用它怎么反编译web应用?如何设置classpath? 谢谢!

解决方案 »

  1.   

    不是你环境的问题,是不是你反编译的class里面还引入了别的class,而这些class文件没有在
    你反编译的路径下面。应该是这个问题。
      

  2.   

    楼上的大哥能否说的详细一些,我这是一个web 应用,确实在class里面调用了其他的class,但是那些class都放在web-info  lib目录里面的jar包了,如何才能在jode里面引用这些jar包让他反编译的时候能够找到依赖的类呢?
      

  3.   

    出现那些问题的原因是也许你的Class结构稍微有点复杂,比如try...catch比较多,循环比较多等等,这个没什么好的工具反编译。
    我还是觉得DJ JAVA Decompiler比较好,兼容性比较好。
      

  4.   

    我的Eclipse的Jode插件就运行的挺好。