2011-08-04 51 views
9

我正在第一次在NetBeans中編寫一個簡單的Swing應用程序,並在Ubuntu機器上這樣做。Ubuntu上的可執行JAR(NetBeans)

許多人都知道,NetBeans會自動爲「設爲主」的項目創建可執行JAR。

在Windows上,您可以雙擊可執行JAR並自動調用JRE並運行該應用程序。在Ubuntu中,雙擊.jar文件會導致文件在存檔管理器中被打開。爲了運行我的JAR,我必須右鍵單擊它並選擇「使用OpenJDK Java 6 Runtime打開」或從命令行啓動它。

從命令行我沒有任何問題。 然而,當我嘗試從右鍵菜單中啓動它,我收到一條錯誤:

文件MySwingApp.jar沒有被標記爲可執行...

所以我有2問題:

  1. 我需要做些什麼才能將其設置爲可執行文件?這是我可以在NB內做的事情,還是我必須使用shell?如果我必須通過shell設置權限,是否與NB的自動生成**可執行文件** JARS策略相沖突?無論如何,我會用什麼命令翻轉可執行文件?!?!
  2. 這只是一個Linux呃逆?我想將這個JAR發送給運行Windows的朋友,我希望他們能夠雙擊它並啓動程序

感謝您提供任何有用的建議!

+0

「標記爲可執行文件」表示您需要在其上具有x位。在終端使用「chmod + x MySwingApp.jar」後cd'ing到其位置。 –

+0

謝謝!但是我的其他問題呢?這是我每次編譯時必須要做的事情,還是每次創建JAR時都要這樣做?那些給我JAR的Windows用戶呢? – Sarah

+0

如果您將jar文件標記爲可執行文件,您可以雙擊它並運行它? – Paul

回答

5
  1. 您需要手動調整構建過程才能在NetBeans中將jar文件標記爲可執行文件。轉到您的項目根目錄並打開build.xml。頭文件有添加到構建過程的說明。有一個目標,「-post-jar」,在構建jar之後調用。您需要制定目標並使用Ant's chmod任務來修改您的jar。一旦你這樣做了,每當你在那個項目中創建一個jar文件,它就會發生。

  2. 只要他安裝了JRE,它就可以在你朋友的Windows機器上正常運行。

Here is a thread關於使用雙擊在Linux中運行jar。

+0

保羅 - 謝謝你! – Sarah

1

Jar文件不是一流的可執行文件,它們不會通過更改其可執行標誌而成爲神奇的可執行文件。

如果你執行一個罐子,你運行該命令

java -jar YOURJAR.jar ... 

這是一樣的,如果你雙擊一個PNG文件,並期望它在繪畫程序

gimp YOUR.png 

運行你不需要讓你的png成爲可執行文件,也不會解決問題。

相反,你必須告訴你的桌面環境,雙擊jar或png-File時應該怎麼做,而且你必須像在Windows上那樣在Linux上執行它 - 也許Windows上的安裝程序會它適合你,因爲通常只在操作系統(Windows)上的桌面環境(Windows)上運行,但Linux有Gnome,KDE,XFCE,LXDE,fluxbox和數百萬個。

它並不確定你想要用它做什麼。由於jar文件是壓縮zip文件的一種特殊形式,通常包含Manifest和類,因此Archivmanager不是一個錯誤的解決方案,它比顯示存檔的內容更節省。

將文件複製到窗口不起作用。 Windows甚至沒有可執行標誌,但你不應該擺弄它。你改變你的桌面設置,那些不能移動到窗口,你不會想。

如果您在DE中有正確的設置,則不需要反覆告訴Netbeans或任何其他IDE,如何處理jar文件。

0

Jar文件基本上是一個zip文件,爲了創建一個可執行文件,你有幾種不同的方法。最好的(在我看來)是使用螞蟻來創建它。或者你可以簡單地echo "Main-Class: YOUR.MAIN.CLASS" >> Manifest,然後通過jar -cmf Manifest JARFILENAME.jar INPUTFILES創建你的jar,然後在linux下使它可執行,右鍵單擊它並單擊屬性。然後點擊權限標籤並檢查execute。或者你可以成爲一個終端bamf和cd到jar目錄並且chmod +x JARFILE.jar HAPPY NIXING !!

2

可以的Java像在Ubuntu(和其他Linux版本)本機二進制,它的內核的一項功能。您需要安裝binfmt-support軟件包以便爲內核提供以這種方式運行java的鉤子。

在Ubuntu中打開一個終端,運行:

sudo apt-get install binfmt-support

然後讓你的JAR文件的可執行

chmod a+x yourjar.jar

然後你就可以像任何其他二進制運行JAR通過鍵入

yourjar.jar