当我们得到一个 spring boot 的 jar 包之后,我们可以通过 java -jar xxx.jar
来运行。
但尝试直接运行 ./xxx.jar
时便会报错。这是因为 xxx.jar 仅仅为 Runnable Jar ,而不是 Executable Jar ,它无法直接运行。
一般情况,我们都会借助 shell 脚本来运行我们的 xxx.jar,如下 runJar.sh:
#!/bin/sh
JAR="./xxx.jar"
java=java
if test -n "$JAVA_HOME"; then
java="$JAVA_HOME/bin/java"
fi
exec "$java" -jar $JAR "$@"
exit 1
在此基础上,我们可以加入更多控制,以实现 runJar.sh start | stop | restart
等特性。
但这样也只是通过 shell 脚本控制 jar 的启动停止,如何做到 Executable Jar 呢?
-
步骤 1:先准备一段 shell 脚本 runJar.sh
#!/bin/sh JAR=`which "$0" 2>/dev/null` [ $? -gt 0 -a -f "$0" ] && JAR="./$0" java=java if test -n "$JAVA_HOME"; then java="$JAVA_HOME/bin/java" fi exec "$java" -jar $JAR "$@" exit 1
-
步骤 2:通过以下语句将 shell 脚本与 jar 文件整合到一起
cat runJar.sh xxx.jar \ > exec-xxx.jar \ && chmod +x exec-xxx.jar
-
步骤 3:直接运行生成的 exec-xxx.jar 包验证
./exec-xxx.jar
同样,在此基础上,我们可以加入更多控制,以实现 exec-xxx.jar start | stop | restart
等特性
网友评论