上次测试了不同平台下java编译运行,但是由于很多依赖库,导致程序执行起来比较麻烦,所以测试下eclipse直接打包。
打包环境:Windows: Windows10+jre+eclipse
运行环境:centos
一、步骤
文件目录:
步骤:(我就不详细描述了)
* Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
* Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。
* Seal content:要封装整个jar或者指定的包packet。
* Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
二、manifest.mf
文件作用:指示程序入口及依赖jar包位置
文件内容:
Tip:据说文件末尾需要留两个空行,据说Main-Class、Class-Path后需要留一个空格
Tip:Class-Path最好写相对位置(相对于最后打包导出的jar文件的位置)
Manifest-Version: 1.0 Main-Class: Send1 Class-Path: lib/amqp-client-4.1.0.jar lib/mysql-connector-java-5.1.41-bin.jar lib/slf4j-api-1.7.24.jar lib/slf4j-simple-1.7.24.jar
三、运行
1、复制依赖库于打包得到的jar目录
2、cmd运行
java -jar test.jar
Tip:可以写一个批处理文件,如run.bat内容如上,实现一步启动。
3、Centos7运行测试
四、疑问
1、打包时依赖库能打进jar中吗?
答案:不推荐,因为即使打入jar中,程序运行时也不能引用内部的依赖库。程序运行时只能引用外部的依赖包。
2、外部依赖包的位置怎么放置呢?
外部依赖包的位置在manifest.mf文件中定义,将依赖文件放置于manifest.mf声明的相对地址即可。