在Mac OS X,在罐雙擊應該會自動打開。但是,我沒有一個好的方法來測試這個;因爲我是一名開發人員,所以我的電腦特意做了很多事情:-)特別是,蘋果自己的Java運行時從10.6開始不推薦使用,我不知道其他Java運行時隨附什麼工具。儘管如此,如果這種方法有效(正如我認爲的那樣),這是最好的選擇。
如果不行,下一個最好的辦法是使用AppleScript,如adayzdone建議。我將使用AppleScript的反而會是這樣的:
do shell script (¬
"cd " & quoted form of POSIX path of (path to me) & "/.. ; " & ¬
"java -jar ExecutableProgram.jar")
的quoted form of ...
位得到腳本路徑(path to me
),將其轉換爲UNIX路徑(POSIX path of ...
),並引用特殊字符的外殼(quoted form of ...
);由於腳本在目錄中運行,因此還需要/..
才能到達Jar所在的父目錄。要進行雙擊,將文本複製並粘貼到AppleScript Editor中,並在「保存...」對話框中將文件格式設置爲「應用程序」。 (要編輯它,請從AppleScript編輯器內部打開該應用程序。)此方法的缺點是您將運行兩個應用程序:真正的Java應用程序和Mac shell。有兩種方法解決此問題:
- 如果命令的命令行輸出並不重要,對AppleScript的第三行中的字符串更改爲
"java -jar ExecutableProgram.jar &>- &"
:&>-
關閉輸出流,並&
到在後臺運行它。 (只需&
將無法正常工作。)
- 更多地參與方法不退出的AppleScript,只是隱藏它:
- 在你的AppleScript應用程序右擊並選擇「顯示包內容」
- 導航到
Contents/
文件夾並打開Info.plist
- 添加關鍵
LSUIElement
與價值true
:
- 如果它在一個純文本的XML格式(不是非此即彼),你可以添加
<key>LSUIElement</key><true/>
- 從命令行,這是
defaults write /full/path/to/Info LSUIElement -bool true
(請注意,您需要以/
,開頭的完整路徑,例如,通過使用"$(pwd)/Info"
獲得,但你不能提供.plist
擴展名)。
- 您也可以使用Apple的「Property List Editor」應用程序,該應用程序(至少以前用)隨開發人員工具一起提供;免費的第三方財產清單編輯也存在。
如果不工作,這樣的事情絕對簡單的方法是寫一個Unix shell腳本,而不是一個Windows批處理腳本。它必須與.command
擴展名一起保存,並設置其可執行位(chmod +x file.command
)。內容應
#!/bin/sh
cd "$(dirname "$0")"
java -jar ExecutableProgram.jar
(如果你不熟悉的Unix shell腳本:第一行聲明這是一個shell腳本;第二行進入目錄中的shell腳本中;第三個行執行相關操作)。這種方法不太理想的原因是它會打開終端(OS X的命令行界面)。你會看到一個窗口,在腳本結束之前一直保持打開狀態;當腳本終止時,所述窗口不會(或不可以)關閉;終端不會自行退出。因此,更明顯的是二等公民。
由於IzPack中的標記不起作用,因此無法通過雙擊腳本來運行可執行jar。在Windows中可以使用上面的批處理腳本。 –
CODe