2012-04-04 72 views
2

我已經在這個網站和谷歌搜索了一些,但一直沒有找到任何信息。我有一個在Mac OS中啓動.app文件的Java應用程序。現在我明白了.app擴展名不是真正的可執行文件,而是一個應用程序包,它包含「/ Contents/MacOS /」子目錄中的可執行文件。我該如何設置從我的Java應用程序啓動的MacOS應用程序包的工作目錄?

對於我的例子,我會使用的應用程序「/Applications/Chess.app」。因此,在這種情況下,實際的可執行文件位於「/Applications/Chess.app/Contents/MacOS/」

這僅僅是將工作目錄設置爲「/Applications/Chess.app/Contents /蘋果系統/」?

+0

你嘗試'Desktop.getDesktop()。打開(「/應用/ Chess.app」)' – 2012-04-04 17:35:43

+0

是的,這就是我目前在我的代碼,它工作正常。不過,我認爲可能有我啓動的應用程序可能需要指定正確的工作目錄。例如,我的Java應用程序也在Windows上啓動.exe文件,而某些Windows應用程序僅在工作目錄設置爲.exe文件位置時才起作用。所以我想通過MacOS,我可能遇到同樣的問題。 – drumhead 2012-04-04 17:57:45

回答

1

Mac應用程序通常不能依賴於將工作目錄設置爲特定的任何內容。 Xcode設置它的一種方式,從Finder啓動設置它不同的方式(通常爲/)。

但是,您不應該通過在Contents/MacOS中執行二進制文件來運行應用程序。您應該使用啓動服務或NSWorkspace(或者,失敗其中之一,/ usr/bin/open)啓動它們。

+0

關於你的第二點,我可以問爲什麼?我發現通過在Contents/MacOS中執行二進制文件,我可以(例如從終端)直接在終端中讀取任何輸出。我同情這個_feels_錯誤,雖然我很想知道缺點是什麼? – wardw 2017-03-06 16:03:16

+1

@wardw:沒關係。操作系統正在討論爲了用戶的緣故,有一款應用程序以另一種方式啓動。一個應用程序不應該這樣做;它應該使用啓動服務。例如,用戶通常不會期望應用程序有多個正在運行的實例。啓動服務將避免這種情況(改爲激活已運行的實例),而如果直接運行可執行文件,則很容易意外地執行此操作。 – 2017-03-06 16:34:43

0

我用 「$ APP_PACKAGE /內容/ ......」[值]下的 「WorkingDirectory」[關鍵]字符串模式下的[辭典] 「Java」 的設置。希望這可以幫助。

我試圖改變用戶的位置,所以我一直在那裏,唯一的問題是,您的應用程序的規模將成倍增加,但如果你刪除的所有內容,所以我努力工作不會減少,甚至它的一面告訴我它是怎麼回事。祝你好運。

相關問題