[url]http://freyja.iteye.com/blog/1982568[/url]
最近做了点小东西,给人运行的时候不可能几kb的程序 还要附带一个100M的jre吧.
so,参照网上的一些做法.
再加工了一下,整出了个4mb大小的JRE
2个版本:
一种适合greenJvm的jre, jar被pack200压缩过
另外一种则是普通的jre
似乎只支持awt swing 不支持socket 等功能
GreenJVM 的提取rt.jar 功能老是失败.不清楚是为什么,可能用到了jni之类的东西吧.
有更好的方法请告诉我下
greenvm按照作者说的做一开始没成功,
因为几点:
1.作者似乎没说清楚步骤
实际上应该是:
解压后的文件夹内GreenJVM.exe 和 vm.cfg是最重要的
最好是新建一个单独的文件夹,把这2个文件放进去
然后打开vm.cfg 一行行的查看配置
其中关注 SET_VM_NAME SET_START_JAR_PATH 和 SET_START_MAIN_CLASS
其他的不用修改
SET_VM_NAME 就是 jre的压缩文件位置, GreenJVM会解压这个压缩文件 变成 jre目录.
然后 如果jre的lib文件夹里面有pack200文件,它会解压成jar文件.例如 rt.jar 压缩成 rt.pack200 在这里又被解压缩成rt.jar
SET_START_JAR_PATH 就是要运行的jar文件
SET_START_MAIN_CLASS 就是main函数
作者给了2个工具,一个greenjvm_make 用来提取 rt.jar 一个pack200 用来压缩jar.但是这个pack200似乎无效.
可以自行写个main方法 进行压缩
例如:
Java代码 复制代码 收藏代码
public static void main(String[] args) throws Exception {
Packer packer = Pack200.newPacker();
OutputStream output = new BufferedOutputStream(new FileOutputStream( "out/rt.pack200"));
packer.pack(new JarFile("out/rt.jar"), output);
output.close();
}
GreenJVM是好东西,他大致上可以认为做了3件事
1.解压jre.7z 压缩和pack200文件
2.设置jre的环境变量?
3.执行jar
[url]http://freyja.iteye.com/blog/1982578[/url]
最近做了点小东西,给人运行的时候不可能几kb的程序 还要附带一个100M的jre吧.
so,参照网上的一些做法.
再加工了一下,整出了个4mb大小的JRE
2个版本:
一种适合greenJvm的jre, jar被pack200压缩过
另外一种则是普通的jre
似乎只支持awt swing 不支持socket 等功能
GreenJVM 的提取rt.jar 功能老是失败.不清楚是为什么,可能用到了jni之类的东西吧.
有更好的方法请告诉我下
greenvm按照作者说的做一开始没成功,
因为几点:
1.作者似乎没说清楚步骤
实际上应该是:
解压后的文件夹内GreenJVM.exe 和 vm.cfg是最重要的
最好是新建一个单独的文件夹,把这2个文件放进去
然后打开vm.cfg 一行行的查看配置
其中关注 SET_VM_NAME SET_START_JAR_PATH 和 SET_START_MAIN_CLASS
其他的不用修改
SET_VM_NAME 就是 jre的压缩文件位置, GreenJVM会解压这个压缩文件 变成 jre目录.
然后 如果jre的lib文件夹里面有pack200文件,它会解压成jar文件.例如 rt.jar 压缩成 rt.pack200 在这里又被解压缩成rt.jar
SET_START_JAR_PATH 就是要运行的jar文件
SET_START_MAIN_CLASS 就是main函数
作者给了2个工具,一个greenjvm_make 用来提取 rt.jar 一个pack200 用来压缩jar.但是这个pack200似乎无效.
可以自行写个main方法 进行压缩
例如:
Java代码 复制代码 收藏代码
public static void main(String[] args) throws Exception {
Packer packer = Pack200.newPacker();
OutputStream output = new BufferedOutputStream(new FileOutputStream( "out/rt.pack200"));
packer.pack(new JarFile("out/rt.jar"), output);
output.close();
}
GreenJVM是好东西,他大致上可以认为做了3件事
1.解压jre.7z 压缩和pack200文件
2.设置jre的环境变量?
3.执行jar
[url]http://freyja.iteye.com/blog/1982578[/url]