JAVA项目打包jar文件执行
Java项目开发完后一般都需要打包成Jar文件布署到生产环境,通常我们使用Eclipse自带的 Export 功能就够用了,今天聊聊 Export 几个选项有比较疑惑的地方。
鼠标右键选择项目,点击 Export 项选择Java类别展开,这个时候很多同学会犯难,老师我是选择 JAR file 还是选择 Runnable JAR file 呢? 两个选项都可以生成JAR文件,但稍有不同,这里简单解释一下
JAR file 项简单地将编译好的 .class 文件打包,运行的时候我们使用 java -cp 要执行的类名 命令, -cp 参数指定包名和要执行的类名(需要包含完整的命令空间),如果有依赖第3方包,还需要在 -cp 参数里指定依赖包名
Runnable JAR file 则在生成的时候指定执行的时候先执行哪个类,运行的时候使用命令格式 java -jar 包名 ,具体是由于MANIFEST.MF文件指定了相关参数,所以执行的时候不必关心首先要执行哪个类,另外在导出的时候可以指定要包含的第3方包文件,可以将第3方包打包在一起。
打包第3方包的时候Eclipse提供几个选项
Extract required libraries into generated JAR:将需要用到的.class文件提取出来
package equired libraries into generated JAR:将需要的jara包打进一个包里
Copy required libraries into a sub-folder next to the generated jar:将需要的库拷贝到一个子文件夹并放在生成的 jar 文件旁边
一般选第1项或第2项比较方便,具体改天再做研究
至此可见,JAR file 通常适用于项目生成模块包,供其他项目使用,而 Runnable JAR file 适用于项目生成布署
另外,生成Runnable JAR file 的时候项目通常会有多个入口 main 方法,而打包的时候只能指定一个默认入口类,这个时候如果我们要运行不同的入口类的话同样可以使用 java -cp 命令执行,稍不一样的地方是 -cp 参数为要执行的包名,另外需要指定要运行的入口完整类名,如下
java -jar hello.jar 执行默认入口类
java -cp hello.jar com.clear.activemq2.JMSConsumerListener 执行指定入口类