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 包,如图所示:
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的设置。