易截截图软件、单文件、免安装、纯绿色、仅160KB

java打包exe 制作安装包 With JRE 自启动

目标:有安装程序包像安装qq一样简单一直下一步即可 ,可卸载,要求程序自动启动,不需要单独安装JRE,就在写这套解决方案的时候,我真是百般痛恨微软.哎无奈啊.幸好最终还是被我想出来了,分享下吧。
 
第一步
jre减肥,删除jre\lib\rt.jar中不使用的类,删除charsets.jar中不使用的字符集编码.MyWork开源项目(http://mywork.sourceforge.net/)中带了一个瘦身过的JRE6.0,非常小只有几M.如果有需要可在此基础上适当的增肥,例如提示有类找不到,只要在完整的jre下rt.jar包中找到这个类所在的包添加到瘦身过的jre即可.
第二步
使用pack200进行压缩,压缩效果非常惊人,具体用法可参考官方手册,下面是最简单的压缩和解压缩命令(如果要制作安装包的话不建议压缩,因为不方便解压缩,还需要另外写程序进行解压)
压缩命令D:\xxxxx\pack200 rt.jar.pack.gz rt.jar
解压缩命令unpack200 -r jre\lib\rt.jar.pack jre\lib\rt.jar
 
第三步
将自己的程序打成jar包,注意指定主类,连同依赖的jar包一同放到jre\lib\ext下面,(当然也可以不怎么干,通过写批处理指定CLASSPATH)直接放到ext下面的好处在下面会体现出来
 
第四步
在jre文件夹的上层目录下面编写启动批处理%1的作用下面在说
@SET PATH=./jre/bin;%1;%PATH%;
@start javaw com.Main(根据实际情况修改为自己的程序入口)
将本地的jre或jdk文件夹重命名,并在cmd下敲java以确认本机的jre已经失效,点击批处理,测试如果程序正常启动的话,继续往下看,如果程序无法启动,将@start javaw com.Main改写为java com.Main重新启动调试下,看看是不是缺类.
 
第五步
将批处理编译成exe程序,使用Quick Batch File Compiler工具(http://www.abyssmedia.com/download.shtml),程序使用起来非常简单这里就不在介绍了,E文不好的可以去汉化新世纪下载中文的,注意如果要制作成安装包必须使用幽灵模式,不可以使用控制台模式.
 
第六步
制作安装包使用InnoSetup工具(百度一下到处都有下载),此工具有使用向导,这部分就不介绍了,向导结束后,会提示生成脚本,保存此脚本并生成exe安装包,运行安装包,如果生成出来的文件程序结构和第四步是一样的,并且可以运行的话,安装包制作完成.(这一步选择程序文件时批处理exe和jre一同加进来注意jre必须是没有进行pack2000压缩的,否则需要在安装脚本里面另写解压程序)
 
第七步
随windows自动启动程序,修改安装脚本添加如下代码
[Registry]
Root: HKLM; Subk


相关文档:

Java面试题

Java基础方面: 
1、作用域public,private,protected,以及不写时的区别
答:区别如下:
作用域           当前类       同一package  子孙类       其他package
public& ......

java引用


class Tank{
 int level;
}
public class Assignment {
 public static void main(String[] args) {
  
  Tank t1 = new Tank();
  Tank t2 = new Tank();
  t1.level= 9;
  t2.level= 47;
  
  System.out.println("1:t1.l ......

Java and XML_读书笔记_2010 5 18

2010-05-18
五、验证XML
l  属性了特征方法
方   法
返回类型
参    数
语    法
setProperty()
void
String propertyId,
Object value
parser.setProperty(“[Property URI]”,
”[Object parameter]”);
setFeature()
void
String feat ......

Java Swing教程(基础)


创建一个JFrame
下面用简单的实例演示了Java Swing创建一个能输入内容的窗口
public class frameTest(){
  public static void Main(String args[]){
    //创建JFrame对象,JFrame用来在屏幕上显示一个Windows窗口。
    JFrame frame = new JFrame("第一个JFrame"); &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号