java项目打包成jar编写启动文件在linux和windows
参考:https://blog.csdn.net/u011752272/article/details/78560715
注:本篇和原文略有不同
1程序的目录结构
目录结构1.1 jdk使用1.8
1.2 src目录下存放类文件和log4j的配置文件
1.3 lib目录存放jar包
1.4 log目录存放日志文件
2程序测试通过后可进行打包,具体步骤为:
2.1选中项目名,右键(Export)导出,选择java——> JAR file,如图:
选择好导出文件2.2Next下一步:
2.2.1 左侧.settings不用勾选,右侧.classpath和.project不用勾选
2.2.2 选择jar包要导出的目录
2.3 Next下一步:
这一步不需要动
2.4 选择程序main方法所在的类文件:
2.4.1选择项目中 程序运行的 main方法所在的类文件,点击browse,在弹出框中就可以看到,点击OK即可,在点击Finish完成。
2.4.2如果点击Finish时弹出 如图警告提示,表示程序中不被建议(或已弃用)的语法,或者有编译错误,如果已经测试过,没有影响,则不用理会,点击ok就行了。
2.4.3查看jar,在步骤 2.2.2中保存的路径下找到 生成的jar查看,如图:
3JAR 文件正常导出后,右键选择打开方式选择 使用解压软件打开,并解压到JAR所在目录下(同级),如图:
3.1解压jar
3.2解压的目录结构
4配置 MANIFEST.MF 文件
4.1打开META-INF 文件夹下的MANIFEST.MF 文件,如果项目中有外部 jar架包引用,需要在此文件中添加引用配置,如果没有则忽略该步骤即可,由于我在本项目中 添加了 log4j 日志jar包,所以添加配置如下:
Main-Class: 就是main() 方法所在的类的.class文件的路径,按照上诉步骤自动生成的MANIFEST.MF,我们已经选择了,所以不用管。
添加 Class-Path: 后面跟上一个空格,然后写你引用的jar包名称,最后回车一行,如我的 log4j-1.2.17.jar 放在了根目录下的 lib文件夹下(注意自己的路径),保存即可
4.2将修改过的 MANIFEST.MF 文件复制,替换掉JAR包里META-INF 下的MANIFEST.MF 文件,如果没有对该文件做修改,则忽略该步骤即可。
5编写 start.bat 运行文件
5.1在该目录下新建一个记事本,内容如下:
java -Xmx1G -Xms1G -jar LinuxTcpTest01.jar
pause
含义:设置程序运行最大最小内存,指定程序运行JAR包就是我们刚刚导出的那个jar包名称,如我的是 LinuxTcpTest01.jar
如图:
保存记事本,并重命名文件为 start.bat ,注意修改文件后缀,有些计算机的文件后缀是被隐藏的注意设置一下 后缀为 .bat
如图:
5.2双击启动start.bat即可,如图看到程序正常运行,日志输出和在eclipse中一样,代表打包完成。
6Linux下 start.sh 启动文件编写
6.1如果需要程序在linux系统下也能正常运行,可编写start.sh 启动脚本,步骤如下:
在该 该目录下新建一个记事本,内容如下:
#!/bin/bash
APP_HOME=/home/node1/Desktop/rmFile #项目文件存放路径
APP_CLASSPATH=$APP_HOME/lib #项目架包路径
jarList=$(ls $APP_CLASSPATH|grep jar) #获取所有架包
echo $jarList #遍历引用架包
for i in $jarList
do
APP_CLASSPATH="$APP_CLASSPATH/$i":
done
echo $APP_CLASSPATH
export CLASSPATH=$CLASSPATH:$APP_CLASSPATH
echo $CLASSPATH
java -Xms50m -Xmx250m com.trs.file.util.TimeTask #设置运行内存 和项目运行的mian类
echo Linux Test End
exit
将#号注释部分根据情况替换成自己实际路径即可,保存并重命名该文件为 start.sh
启动 start.sh (在文件目录位置输入./start.sh)
注意:
1. linux上必须要有java环境
2.启动文件所在目录必须要有权限,否则启动时提示Permission denied;
解决方法:在该目录下执行 chmod u+x *.sh
3.如果报错:-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory
主要原因是start.sh是我在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。
我们可以通过vi编辑器来查看文件的format格式。步骤如下:
1.首先用vi命令打开文件
2.在vi命令模式中使用 :set ff 命令,可查看文件格式
3.修改文件format为unix
方法一:使用vi修改文件format
命令:set ff=unix