美文网首页
整合 shell 脚本与 Runnable Jar

整合 shell 脚本与 Runnable Jar

作者: hemiao3000 | 来源:发表于2022-03-27 21:57 被阅读0次

当我们得到一个 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 等特性

相关文章

网友评论

      本文标题:整合 shell 脚本与 Runnable Jar

      本文链接:https://www.haomeiwen.com/subject/nkqujrtx.html