簡體   English   中英

Java可執行jar無法在OS X上作為./program.jar執行

[英]Java executable jar cannot be executed as ./program.jar on OS X

使用Linux,我運行了一些用Java編寫的程序,方法是將它們壓縮在帶有清單文件的jar中,然后將它們放在添加到$ PATH中的個人目錄中,如下所示: program.jar file2 file2 它在我將控制台指向的任何目錄中都可以很好地工作,甚至可以執行program.jar file1 | less program.jar file1 | lessprogram.jar file1 > output.txt 。它們就像是bin控制台程序一樣工作。

但是在OS XI上無法復制相同的行為,我被迫使用java -jar program.jar運行它們,否則會顯示-bash program.jar: cannot execute binary file

有沒有辦法使jar像在OS X上的Linux中一樣起作用?

編輯:

感謝Jean-BaptisteYunès


從命令行

如果使用Xcode Organizer的模板之一構建新的Java Swing應用程序,則Xcode會自動生成一個應用程序包,其中包含默認的Info.plist文件。 您可以直接在Xcode中或使用“屬性列表編輯器”微調Info.plist文件。 有關使用Xcode進行Java開發的更多信息,請參見Xcode幫助(可從Xcode的“幫助”菜單獲得)。

如果要將現有的Java應用程序轉換為OS X Java應用程序,請使用/Developer/Applications/Utilities可用的Jar Bundler應用/Developer/Applications/Utilities 它允許您獲取現有的.class.jar文件,並將它們包裝為應用程序捆綁包。 Jar Bundler用戶指南中提供了有關Jar Bundler的信息(包括教程)。

要從命令行(例如,在shell腳本或Ant文件中)構建有效的應用程序捆綁包,您需要執行以下步驟:

設置正確的目錄層次結構。 頂級目錄應使用后綴.app來命名您的應用程序名稱。

在應用程序捆綁包的根目錄中應該有一個目錄目錄。 它應該包含一個MacOS目錄和一個Resources目錄。 Java目錄應位於Resources目錄中。

目錄布局應如下所示:

YourApplicationName.app/
Contents/
MacOS/
Resources/
Java/

JavaApplicationStub文件從/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/復制到應用程序捆綁包的MacOS目錄中。

在應用程序捆綁包的Contents目錄中創建一個Info.plist文件。 您可以從現有Java應用程序(如Jar Bundler)中的示例開始,然后對其進行修改或從頭開始生成一個全新的示例。 請注意,除非您在此屬性列表中設置了正確的屬性,尤其是MainClass鍵,否則應用程序捆綁包不會啟動。

Contents目錄中創建一個PkgInfo文件。 它應該是純文本文件。 如果尚未在ADC中注冊創建者代碼,則內容應為APPL???? 如果您已注冊創建者代碼,請替換???? 與您的創建者代碼。

將應用程序的圖標文件放入Contents/Resources/目錄。 使用Developer/Applications/Utilities Icon Composer幫助創建圖標文件。

將您的Java .jar.class文件復制到Contents/Resources/Java/

使用/Developer/Tools/ SetFile設置捆綁包位Finder屬性。 例如, /Developer/Tools/SetFile -a B YourApplicationName.app 有關SetFile更多信息,請參見手冊頁。

完成這些步驟之后,您將擁有一個包含Java應用程序的可雙擊應用程序捆綁包。

OSX Apps需要捆綁在一起,因此請閱讀Oracle Java OSX DistributionApple Java Bundles 之后,您將能夠通過命令行啟動它們(只需要求手動運行存根即可)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM