〖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 就能够跑起程序来了~!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架