我的程序里用了很多库(*.jar),但是往往只用到库中的部分内容。请问有没有什么工具能分析一下各个class之间的依赖关系,把程序里没有用到的库中的class给删掉?

解决方案 »

  1.   

    jarjar是个不错的工具
      

  2.   

    学习了`以前也做过类似的,不过我是手动删除没用到的jar包。
      

  3.   

    我想说的是JAR包少了程序不能多运行多了的话还是可以跑跑的!
      

  4.   


       这个不太好区分。如果手动区分会碰到这样的问题,如果你引用的class文件,它又引用了库中的别的文件。这样就可能会出错。你的需要反编译一个一个去排除。    不知道是否有这样的工具。
      

  5.   

    一个jar就几百K,何必呢,完全是吃力不讨好?有些jar根本就没办法分清依赖关系,比如在一个接口包,名为a-api.jar,一个实现jar:a-impl.jar,在a-api.jar中有一个配置文件,或者通过path进行配置,动态读取类名,反射调用具体实现,此时此刻你要移除了a-impl.jar,岂不是出问题了
      

  6.   

    好象没有这样的工具。但有一个办法,把所有jar都删除,然后execute,根据产生的错误提示信息,一般是程序找不到运行所需的类。这样一步一步就看出各个类之间的关系了。不过有点麻烦,需要耐心。
      

  7.   

    你要是了解每个jar的含义就好办了,直接删除.因为自己做的东西肯定知道用到哪些第三方包了,
      

  8.   

    你如果用的是myeclipse的话 Ctrl + O 能列出所有的类,Ctrl + T 能列出所有的类结构~~
      

  9.   

    eclipse 自带的打包工具,编译成可执行文件的工具就可以
      

  10.   

    自己找用到的类 及关联的类吧 然后jar buildpath到你的项目中
      

  11.   

    使用maven的话
    goal shade:shade
    配置 minimizeJar 为true