用Fat Jar 插件打包可执行jar文件

1.介绍

       一个非常简单的软件打包解决方案,它利用 Java 的定制类装入器,动态地从单一档案文件中装入应用程序所有的类,同时保留支持 JAR 文件的结构。随着 FatJar Eclipse 插件 FJEP 的推出, Eclipse 的用户现在只要在向导中选中一个复选框,就可以创建 One-JAR 应用程序。依赖的库被放进 lib/ 目录,主程序和类被放进 main/main.jar,并自动写好 META-INF/MANIFEST.MF 文件。

2.安装

     fat-jar它是sourceforge.net下的一个开源工具从http://sourceforge.net/projects/fjep地址可以下载该工具,下载完成后是一个zip压缩包,解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.31文件夹拷贝到eclipse的目录下的dropins文件夹下(即%ECLIPSE_HOME%\dropins),然后直接启动eclipse 右击项目,会发现该项目中已经集成了该插件 在启动后 右击工程就可以看到 Build Fat jar的选项 安装成功或者,点击Windows选项栏的Preferences选项,可以看到Fat Jar Preferences选项表示安装成功。
3.使用
      第一步,选中项目根节点后,点击右键,在弹出菜单中选择Build Fat Jar。

      第二步,设置Jar-Name 这是生成的jar 文件名称;Main-Class 生成的jar 要运行的主类;Class-Path 生成的jar 参考的包,多个包用空格隔开,最后还要加上代表当前目录的点。【注意,这里没有设置Class-Path关联的jar包,而是直接将需要的jar包加进来打个一个包】如图所示:


      第三步、选择要打包的已编译的class 文件,主要是你写的类文件,同时也把需要独立jar包也勾选上,如图所示:


      第四步、点击finish 生成jar 包,如图所示:


      第五步、运行可执行的jar包
      java -DappStart=precki -jar precki_fat.jar processName=PRECKI

      参考主程序代码:

	public static void main(String[] args) {
		//加载配置文件
        try {
        	DOMConfigurator.configure(System.getProperty("user.dir") + "/config/log4j.xml");
            String[] paths = { 	"/config/applicationContext.xml",                    
                    			"/config/dataSourceContext.xml",
                    			"/config/dataAccessContext.xml"};
            ctx = new FileSystemXmlApplicationContext(paths);
            logger.info("load spring and log configuration finished."); 
            
            for (int i = 0; i < args.length; i++) {
            	String prefix = "processName=";
            	int index = args[i].indexOf(prefix);
				if (index >= 0) {
					processName = args[i].substring(index + prefix.length());
				}
			}
            
            //加载配置
            PetrConfig petrConfig = (PetrConfig)ctx.getBean("petrConfigBean");
            petrConfig.loadConfig();
            logger.info("load system configuration finished.");
            
            //注册退出时资源清理线程
            addShutdownHook();
            
            //启动配置的所有线程和timer
            ThreadManager manager= (ThreadManager)ctx.getBean("managerBean");
			manager.startDetectTimer();
            manager.start();
            
            
            //接受输入参数q或者Q,退出系统
//    		int input = 1;
//    		while(input != 'q' && input != 'Q') {
//    			try {
//    				input = System.in.read();
//    			}catch(Exception ex) {
//    				ex.printStackTrace();
//    			}
//    		}
//    		System.exit(0);
            
        }catch (Exception e){
            e.printStackTrace();
            logger.error("precki start failure.", e);
        }
	}

总结:

       制作过程的关键是设置Main-Class 要运行的主类;Class-Path 依赖的外部jar 包,这个包的文件是相对于生成的jar 包的。比如我的是在jars 目录下生成可执行程序jar,那么依赖的包也要放到这里 Class-Path 里把依赖的包名打上,用空格隔开就中了,还要加上空格点.代表当前目录
Built Fat Jar 可以从网上下载,解压后把plugins 文件夹放到Eclipse 目录下,重新启动Eclipse,就可以在项目的右键菜单里看到Built Fat Jar。
如果程序无法启动,请检查JDK 的环境变量是否设置正确。包括:JAVA_HOME、PATH、CLASS_PATH。
如在cmd中运行程序出错,且有提示:Error: Unable to access jarfile 或双击生成的jar包提示 不能找到Main-class,请重新检查你在第二步的设置,特别是class-path的设置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值