如何将java程序在打包时做精简

hayashiri 2012-04-06 05:56:11
最近写了些java小程序,引用了一些第三方的包,在最后编译出来用exe4j打包成exe时,发现明明很小一个程序,最后打包出来有40M之多,因为引用的第三方包里面我实际使用到的class可能并没有那么多。我就在设想如何在java程序打包的时候分析整个工程中我所写的代码的class之间的迭代引用关系,将我这个工程最终必须要使用的class从各lib包里面抽离出来,做成一个精简的jar包,里面的class能够满足我当前程序的运行就行。

跪求解决方案~~~
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hayashiri 2012-04-11
  • 打赏
  • 举报
回复
算了散分结贴走人
dalancon 2012-04-10
  • 打赏
  • 举报
回复
看不懂啊 顶 支持一下
shine333 2012-04-09
  • 打赏
  • 举报
回复
话说java真不是这样用的。要想用exe,还不如学习如何写innosetup之类。
真的小功能还是用C++或者C#吧
安特矮油 2012-04-09
  • 打赏
  • 举报
回复
没弄过那么高级的,不过如果你想精简,要么你就自己写一些吧,因为你很难知道他的包里面的引用关系,
hayashiri 2012-04-09
  • 打赏
  • 举报
回复
周一了,新的一周又来了,各位同学多多发表意见呀
hayashiri 2012-04-09
  • 打赏
  • 举报
回复
真的没有办法了么?还是没有人往这个方面想过呢?
hayashiri 2012-04-07
  • 打赏
  • 举报
回复
不是的,没打包JRE,比如,我自己写的代码打出来的jar包50k,引用的lib30M,那我打包的时候必须要将这30M的jar打包进去,其实可能这30M的jar或多或少都有引用,但是肯定每个类都引用到了,我是想如何在打包的时候,将我写的程序中引用到的lib里的class(包括这些class迭代一用的其他class)和我写的class打一个最精简的包。
hayashiri 2012-04-07
  • 打赏
  • 举报
回复
5楼的同学,可能你理解错了,其实我要的不是想要将jvm打包精简到我的exe中,我的意思是将我整个工程里面引用的lib精简,比如我在工程中引用了
a.jar
aa.class
ab.class 其中ab.class引用了aa.class
ac.class
ad.class -以下的class没有我工程中的任何类引用(包括类间的迭代引用)
....
b.jar
ba.class
bb.class bb.class引用了bc.class
bc.class
....
c.jar
ca.class
cb.class
cd.class cd.class引用了ca.class
.......


如果我在这个工程中自己写的代码直接引用了ab.class,bb.class,cd.class.那么我想在打包时,只打包我自己写的代码的class,以及aa.class,ab.class,bb.class,bc.class,ca.class,cd.class.因为在这个工程中,只需要这些class就可以正常运行我的程序,以达到祛除不必要的class进行程序精简的目的,可能我这几个lib看起来精简不了多少,但是如果工程引用的lib太多,但是实际上我自己写的代码没有引用(包括迭代引用)到所有的类,那么这个精简是不是很有必要呢

不知道我这个描述同学们能看明白么
dxqrr 2012-04-07
  • 打赏
  • 举报
回复
GreenJVM可以精简rt.jar,至于第三方jar包,没试过,LZ可以试下
原来缘来 2012-04-06
  • 打赏
  • 举报
回复
肯定是把JRE也打到里面了,测试方法-->找一个没有安装JDK并且没有安装JRE的电脑,点击你的.exe文件,看能否运行,如果运行成功,证明把JRE打到里面了
nj_dobetter 2012-04-06
  • 打赏
  • 举报
回复
你是不是包上了JRE?
hayashiri 2012-04-06
  • 打赏
  • 举报
回复
没有人帮忙么?还是我的问题没描述清楚呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧