zoukankan      html  css  js  c++  java
  • 〖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 "
      Option does not exist : $OPTARG
    "
              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 ..
    "
    generate_wrapper_script $wrapfile
    cat $wrapfile $jar_file > $package_name
    chmod +x $package_name
    
    echo -e "
    output: $package_name
    "
    
    rm -f $wrapfile

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

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

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

  • 相关阅读:
    优秀的JavaScript模块是怎样炼成的(转发)
    从发展历史理解 ES6 Module(转发)
    JavaScript 模块演化简史(转发)
    objcopy 格式转换
    链接操作
    fflush()
    为什么栈地址从高到低生长,堆从低到高
    C语言中,a[-1] (负数下标)的用途
    va_list 、va_start、 va_arg、 va_end 使用说明
    docker 部署 redis
  • 原文地址:https://www.cnblogs.com/scue/p/4461014.html
Copyright © 2011-2022 走看看