amtoaer

晓风残月

叹息似的渺茫,你仍要保存着那真!
github
x
telegram
steam
nintendo switch
email

让.jar程序“可执行”

最近用java写了一个命令行版小牛翻译,通过maven构建生成.jar文件。但众所周知,.jar程序不能直接运行,而是需要使用JVM解释:

java -jar filename.jar ...arguments

这导致其使用体验并不友好。那有没有什么方法让.jar程序 “可执行”(不用带上java -jar)的方法呢?我去查了查,发现是有的。

内容主要参考自这篇文章

Linux下可执行的程序有两种,二进制程序和脚本文件。前者是机器码,可以直接运行,后者则需要一个解释器,通过解释器对代码解释执行。在脚本文件中,可以通过在文件头加入hashbang指定解释器,这样在执行脚本文件时,系统会使用hashbang中指定的解释器解释脚本内容。

python为例:正常情况下,我们需要通过python filename.py来执行程序,而如果在filename.py首行加入#!/usr/bin/python并给予其可执行权限,它便可直接通过./filename.py执行。

回到java.jar文件本身是字节码的集合,java -jar表明需要用JVM去解释它。因此其实我们的处理方法和python类似:

  1. 新建文件,在其开头写入hashbang

    touch a
    echo "#!/usr/bin/java -jar" > a
    
  2. 将需要解释的内容(整个.jar文件)追加到文件后

    cat /path/to/.jar >> a
    
  3. 给予该文件可执行权限

    chmod +x ./a
    

之后就可以将其作为普通的可执行文件使用啦!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。