文章目录
- 1:背景
- 2 maven 工程
- 3 普通工程
- 3.1 打可执行的 jar
- 3.2 打普通 jar
- 4: 运行 jar 包
1:背景
偶然的境况下,被迫使用了 Eclipse 进行代码。遇到的代码也有点奇怪,main 方法启动 java 工程,里面封装 Tomcat ,有点类似 SpringBoot 的封装。然后在打包的时候需要了一些问题。
2 maven 工程
1:安装 maven 打包插件
war 包:需要 maven-plugin-war
jar 包:需要 maven-assembly-plugin
2:
eclipse 打包: 右键 maven-clean ,maven-build: Goals 中填入 package ,Update Snapshots 和 Skip Tests 打勾 ,执行
命令行打包:找到对应 pom.xml 文件,cmd 进入,先 mvn clean,再 mvn package -Pqa -Dskip Tests
ps:dev(开发)、qa(测试)、pre(预发)、生产正式(prod)等配置文件,-P 参数,没有则不加
3 普通工程
很显然,我遇到的是普通工程,而且 JVM 配置了启动参数。经过很多时间的尝试,参考了很多资料,问了一些人,才得以成功。
3.1 打可执行的 jar
选Runnable JAR file点Next
选择主函数,选择导出路径,第三方依赖选择第三个,点Finish。
第一个Extract required libraries into generated JAR 为提取extract需要的依赖的库jar合成到jar文件里,引用的jar提取class到导出的jar里;
第二个Package required libraries into generated JAR 则仅仅打包依赖库到jar文件;
第三个Copy required libraries into a sub-folder next to the generated JAR 则把依赖库放到一个文件夹中,生成 jar 同时单独生成一个依赖包
ps:对于我遇到的这个项目,我开始一直选择的是第一个,打完 jar 后一直运行不成功,直到有人选择第三个成功了。
3.2 打普通 jar
1:准备主清单文件 “MANIFEST.MF”,
由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF
类似下面的结构,可以参考打可运行 jar 解压后的文件
/**
* 注意点:
* 1:Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;
* 2:建立的 MANIFEST.MF 要和依赖的 lib 文件夹在同一级,且打包文件也要选择在这一级,否则将会出现“Exception in thread “main”
* 3:如果导入的第三方jar包太多的话,同一行的中间用一个空格隔开,如果换行后,第一个前面要有两个空格
* 4:Main-Class后面是类的全地址,写src 下的全部包名.类名
* 5:写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行
*/
Manifest-Version: 1.0
Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar
lib/commons-logging-1.1.jar lib/log4j-1.2.16.jar lib/jackson-all-1.8.5.jar
Main-Class: main.KillCheatFans
2:选择JAR file->Next
3:选择打包的目录,导出文件选择第一项,和 jar 包存放的位置(和主清单以及 lib 在同一级)
- Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
- Export all output folders for checked projects 表示导出选中项目的所有文件夹
- Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
- Export refactorings for checked projects 把一些重构的信息文件也包含进去
4:点Next
5:选择刚刚自定义的配置文件。点Finish ,等待打包完成
4: 运行 jar 包
上面针对这个项目的,打可执行包,以及创建主清单,打jar 包,然后 去运行,我都尝试成功了。另外,在这个项目启动的时候,带了一些 JVM 参数,需要在启动的时候配置。在 CMD 启动后,输入类似下面的内容即可(不一定有, 没有的的话 java -jar 就行)
// 注意:有些喜欢在main 方法配置${workspace_loc} ,这个就是当前项目下,换成直接路径即可
java --Xms2048M -XX:Persize=256M -D ... -D ... -jar server.jar