java部署jar包可以使用 java -jar命令,比如:
java -jar demo.jar
执行上述命令后,JAR 包中的程序将在 Linux 系统中运行。
注:在运行 JAR 包之前,确保你的 JAR 文件是可执行的,并且包含了正确的类和依赖项。如果 JAR 包依赖于其他库或配置文件,确保它们也在正确的位置可用。
java -jar 是 Java 命令的一种形式,用于运行 JAR(Java Archive)文件。-jar 参数告诉 Java 虚拟机直接从 JAR 文件中执行主类。
除了-jar参数外,java命令还有许多其他常用的参数,以下是一些常见的参数:
示例如下:
java -jar -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m /opt/myapp/myapp.jar
命令如上,我们同时使用了多个参数。-Xms4096m设置最大堆内存为4096MB,-Xmx4096m设置初始堆内存为4096MB,-XX:MetaspaceSize=256m 将元空间的初始大小设置为256MB,-XX:MaxMetaspaceSize=256m 将元空间的最大大小设置为256MB,最后,通过-jar选项指定要运行的JAR文件为myapp.jar。
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump/file.hprof -jar MyProgram.jar
命令如上,堆转储文件将会被生成在指定的路径/path/to/dump/下。
启用堆转储可以帮助你在遇到内存问题时进行故障排查和分析,确定可能的内存泄漏或其他与内存使用相关的问题。但在实际使用中,还需要结合其他的监控和分析工具来全面了解程序的内存使用情况。
java -jar demo.jar &
命令如上,通过使用&,可以在不中断其他工作的情况下运行 JAR 文件。这种方式可以避免打断后程序停止运行的问题,但是如果关闭当前窗口后程序会停止运行。
nohup 是一个在 Linux 和 Unix 系统中常用的命令,它的主要作用是让命令在后台运行,并且阻止该命令被终端的挂断信号(HUP)打断。
nohup java -jar demo.jar &
命令如上,即使关掉命令窗口,后台程序demo.jar也会一直执行。
注:nohup并不能保证命令在系统重启或其他情况下仍然继续运行。如果你需要确保命令在系统重启后仍然运行,可能需要使用其他的方法,如守护进程或系统服务。
nohup java -jar demo.jar >1.txt &
命令如上,这个命令的作用是将 Java JAR 文件demo.jar的输出重定向到文件1.txt中,即输出内容不打印到当前窗口上,而是输出到1.txt文件中,并将其放在后台运行。
nohup java -jar demo.jar >/dev/null 2>&1 &
命令如上,具体内容解释如下:
nohup java -Xms515m -Xmx1024m -jar -Dfile.encoding=UTF-8 demo.jar --spring.profiles.active=prod >/dev/null 2>&1 &
命令如上,在上一个命令的基础上,增加了spring.profiles.active的指定,encoding的指定和java内存最大堆和初始堆的指定。
为了不用每次部署都打命令,我们可以把编辑好的命令写在一个.sh的文件里。 比如,我们把下面命令写到.sh的文件里。
nohup java -Xms515m -Xmx1024m -jar -Dfile.encoding=UTF-8 app-kiba-spring-kafka-1.0.0.jar >/dev/null 2>&1 &
如下图:
然后我们连接到linux,然后CD到文件夹,命令如下:
cd /soft/app-kiba-spring-kafka
然后执行命令:
./startup.sh
如果被系统提示:
-bash: ./startup.sh: Permission denied
这是因为没有执行.sh的权限。 执行命令:
chmod u+x *.sh
所以,chmod u+x *.sh 命令的作用是为当前目录下所有以.sh结尾的文件添加用户执行权限。 然后再重新运行 ./start.sh 运行成功后,界面应该没有任何提示,我们可以直接请求我们的网站地址,测试即可,比如我的地址如下: http://10.1.0.145:8520/code/doc.html#/home 请求结果如下:
includeSystemScope
发布jar时,记得增加includeSystemScope,如下:
<includeSystemScope>true</includeSystemScope>
includeSystemScope是一个 Maven 项目中的配置项,includeSystemScope为true,则 Maven 会将系统范围的依赖项包含在构建过程中;如果设置为false,则不会包含系统范围的依赖项。
skip
发布jar时,根据实际情况判断是否删除,如下:
<!-- <skip>true</skip>-->
true用于指定是否跳过某个测试用例,true表示跳过,false表示不跳过。
如下图:
如果需要停止正在运行的jar包,我们可以先执行jps查看正在运行的进程:
jps
然后找到运行的jar包,然后执行kill
kill 3335206 //关闭
kill -9 3335206 //强制关闭
也可以使用ps -ef | grep,代码如下:
ps -ef | grep app-kiba-spring-kafka-1.0.0.jar
一样可以捕获进程的id。然后同样执行kill命令。
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!