写了个CS程序,现在制作安装包,想将Jre绑定到程序中。但Jre包大太了。想对其瘦身,网上很多对rt.jar瘦身的文章,貌似方法都一样,我照做后序不能运行。在这里想求教如果精确完整的知道程序运行过程中调用了rt.jar中的哪些类。谢谢了。如方案可行,我的另一篇提问的分同样奉上:http://topic.csdn.net/u/20110822/17/cdb6b52e-4488-4c83-a95e-1ce4321cc4a6.html

解决方案 »

  1.   

    lz想法不错,我也想了好久,能不能自己写个ClassLoader,然后监视loadClass方法。
    实在不行lz就别跨平台了,直接exe4j生成exe吧。几M。
      

  2.   

    不想要 JRE 的话,那就不要用 Java 来写!
      

  3.   

    试试GreenJVM
    实在不行,就需要自己对其瘦身了
    看看网友的:http://my.oschina.net/benbenming/blog/8557
      

  4.   


    GreenJVM 确实不行。其实提取出来的class不能满足程序运行需求。很郁闷。现在正自己对其瘦身中。大家还有没有更好的方法?说来共享一下啊。
      

  5.   

    exe4j打包加压缩也才30来M,可以接受的,自己精简很麻烦也很容易出问题
      

  6.   

    定制JRE……这个很容易出问题,还是中规中矩的来吧。可以考虑提供两个版本,如果用户已经装了Java就下无JRE的,没装就下绑定了JRE的。我觉得最好是告诉用户主动安装Java。反正我一直就是这态度:想用我写的程序就听我的。我让你装啥你装啥。不想装就别用。
      

  7.   

    java -verbose ........[Opened /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Object from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.io.Serializable from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Comparable from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.CharSequence from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.String from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.reflect.GenericDeclaration from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.reflect.Type from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.reflect.AnnotatedElement from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Class from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Cloneable from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.ClassLoader from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.System from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Throwable from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    [Loaded java.lang.Error from /opt/java/share/jdk1.7.0/jre/lib/rt.jar]
    ...报没有 loaded的类文件去掉即可。
      

  8.   

    从java 6u10开始、提供了java kernel installer。只找到从web分发的方法。