
為什麼.jar
當我像這樣運行腳本時它會運行
java -jar myfile.jar
,但是當我像這樣執行它時它不運行
./myfile.jar
答案1
當您執行 jar 時,java -jar myfile.jar
您正在告訴 shell 執行該java
命令並向其傳遞一些可以理解的參數java
。但是,當您使用它來運行它時,./myfile.jar
您會要求外殼程式確定運行它的中斷器,但它無法做到這一點。
shell 在腳本開頭尋找 shebang 行,以了解使用哪個應用程式執行腳本,這就是為什麼您會看到以以下內容開頭的 shell 腳本:
#!/bin/bash
或 python 腳本以
#!/usr/bin/python
/bin/bash
基本上,您告訴 shell 的是使用您在或處找到的應用程式來執行腳本/usr/bin/python
。對於您的 jar 文件,shell 無法找到 shebang,因此它不知道如何執行程式碼。
過去我使用包裝腳本來執行 Java 應用程序,因此類似於:
#!/bin/bash
java -jar /path/to/myfile.jar
然後您只需使用該命令使該可執行文件成為可執行文件,chmod
您就可以像執行任何其他 shell 腳本一樣運行它。
答案2
我已經使用 sudo apt-get install openjdk-7-jdk 安裝了 jdk 並使用 sudo apt-get install openjdk-7-jre 安裝了 jre 但我仍然面臨這個問題。我認為這可能是由於我的系統無法找到java路徑的原因。最後,當我使用以下命令安裝 oracle jdk7 安裝程式時,我可以使用 ./myfile.jar 命令執行 .jar 檔案。我使用以下命令來安裝它:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get 更新
sudo apt-get install oracle-jdk7-installer