〖Linux〗将Jar文件打包成Linux可执行文件

因为不想敲写 java -jar jarfile,而是想直接敲写  ./jarfile 就能够跑起程序

 

复制代码
#!/bin/bash - 
#===============================================================================
#
#          FILE: shell_pack.sh
# 
#         USAGE: ./shell_pack.sh 
# 
#   DESCRIPTION: 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: lwq (28120), scue@vip.qq.com
#  ORGANIZATION: 
#       CREATED: 04/22/2015 02:38:01 PM CST
#      REVISION:  ---
#===============================================================================

#===  FUNCTION  ================================================================
#         NAME:  usage
#  DESCRIPTION:  Display usage information.
#===============================================================================
function usage ()
{
        cat <<- EOT

  Usage :  $0 [options] -p package -s script file1 file2 file3 ..

  Options:
  -h|help       Display this message
  -p|package    The output package name
  -j|jar file   The jar file

EOT
}    # ----------  end of function usage  ----------

#-----------------------------------------------------------------------
#  Handle command line arguments
#-----------------------------------------------------------------------

while getopts ":hp:j:" opt
do
  case $opt in

    h|help    ) usage; exit 0   ;;
    p|package ) package_name=$OPTARG ;;
    j|jar     ) jar_file=$OPTARG ;;
    \?        ) echo -e "\n  Option does not exist : $OPTARG\n"
          usage; exit 1   ;;

  esac    # --- end of case ---
done
shift $(($OPTIND-1))

if [[ -z $package_name ]]; then
    echo "package_name can't not be empty"
    usage
    exit
fi

if [[ -z $jar_file ]]; then
    echo "jar_file can't not be empty"
    usage
    exit
fi

generate_wrapper_script(){
    local wrapper_script=$1
    cat <<-'EOT' >$wrapper_script
#!/bin/sh
java -jar $0 "$@"
if [ $? -ne 0 ]; then
    echo "run jar file failed."
    exit 1
fi
exit 0
#__SCRIPTEND__
EOT
}

wrapfile=wrap_$$.sh

echo -e "start packing ..\n"
generate_wrapper_script $wrapfile
cat $wrapfile $jar_file > $package_name
chmod +x $package_name

echo -e "\noutput: $package_name\n"

rm -f $wrapfile
复制代码

保存到 jar_wrapper.sh,使用方法举例:

  ./jar_wrapper.sh -p /tmp/aaa -j /tmp/test_demo1.jar

然后,chmod +x /tmp/aaa && /tmp/aaa 就能够跑起程序来了~!

posted @   scue  阅读(2629)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示