Windows命令行打jar包的方式
1. 检查是否配置环境变量
java -jar
2. 进入到想要编译成jar包的class文件位置
D:\>cd XX\XX\ClassEditer\target\classes
3. 将文件编译成jar包
jar cvf Main.jar classes/. 该命令是将classes下的所有 .class 文件编译成jar包
jar cvf timeing.jar Main.class 该命令是将一个文件编译成jar包 前面xxx.jar 是想编译成的jar包名, 后面的Main.class是要编译的文件
idea中打jar包方式
-
我们点击菜单栏中的File–>选择Project Structure…(Ctrl+Alt+Shift+S)进入到设置页面,或者在IntelliJ IDEA页面右侧点击右上角的按钮也可到配置页面。
-
在Project Structure的设置页面选择Artifacts,然后点击右侧的绿色“+”号,接下来选择JAR–>From modules with dependencies…进入到设置页面。
-
接下来是最重要的步骤,modules一般会自动生成,Main class需要点击右侧的按钮,找到项目工程中含有main方法的那个类。JAR文件设置我们选择extract to the target JAR,打包时可将代码依赖的包也打入。最后META-INF/MANIFEST.MF的设置,选择项目的根路径即可。
-
需要注意的是,如果项目中已经有META-INF/MANIFEST.MF文件的话是设置不成功的,需要先找到项目在磁盘中的位置,然后删掉该文件再重复上述的步骤才可以。
-
设置完成后便可以执行生成jar包的操作了,点击菜单栏中的Build–>Build Artifacts…,然后在下方代码区便可以看到Build Artifact 选择之前创建的Artifacts然后点击Build即可。
-
在Build JAR文件后下方会有已完成的提示,找到项目所在的磁盘位置,在项目根路径下的out/artifacts/目录下便是新生成的jar文件。
linux上启动jar包的方式
1. 使用shell脚本
脚本内容:
#!/bin/bash
:
source ~/.bash_profile
echo starting
ps -ef | grep home/位置/xxxjar包名.jar | grep -v grep | awk '{print $2}' | xargs kill -9
java -jar /home/位置/xxxjar包名.jar > /home/位置/xxx日志名.log 2>&1 &
2. 使用命令行
//方式1
java -jar /data/xxx.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
//方式2
java -jar /data/xxx.jar &
&代表在后台运行。 特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
//方式3
nohup java -jar /data/xxx.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
3. 查看jar包是否在运行
ps -ef | grep xxx xxx是jar包名
执行jar包可能遇到的问题
1. Invalid or corrupt jarfile xxx.jar
这样的错误的话,就说明MANIFEST.MF文件有问题
注意:
Main-Class:后面应该有一个空格
Manifest-Version: 1.0
(这是空行)
最后一行也要有一个回车键。否则后面那一行是不能打包进去的
总结:
总是以Manifest-Version属性开头
每行最长72个字符,如果超过的化,采用续行
确认每行都以回车结束,否则改行将会被忽略
如果Class-Path 中的存在路径,使用"/“分隔目录,与平台无关
使用空行分隔主属性和package属性
使用”/“而不是”."来分隔package 和class
class 要以.class结尾,package 要以 / 结尾