最近用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
類似:
-
新建文件,在其開頭寫入
hashbang
touch a echo "#!/usr/bin/java -jar" > a
-
將需要解釋的內容(整個
.jar
文件)追加到文件後cat /path/to/.jar >> a
-
給予該文件可執行權限
chmod +x ./a
之後就可以將其作為普通的可執行文件使用啦!