2012-11-21 32 views
0

我在Eclipse中使用SWT爲我的GUI製作了一個使用Java的小型應用程序。我通過安裝SWT設計器來設置項目,SWT Designer與SWT設計器非常相似。我通過File >> New >> Other >> Window Builder >> SWT Designer >> SWT/JFace Java Project來創建項目。這爲我設置了整個項目,所以我可以開始使用SWT。當我使用Eclipse運行它時,我的程序成功運行。在Eclipse中導出SWT項目(通過SWT設計器進行項目設置)

不過,我希望能夠在沒有Eclipse的情況下運行它。我試圖通過File >> Export >> Java >> JAR文件將它導出爲.jar。我選擇了我的項目,點擊下一步>>下一步,然後我設置我的主類並完成。沒有錯誤。

打開的.jar給我:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout

這是很清楚,SWT是不是它應該是,所以我打開.jar和發現只有我的文件中,META-INF等沒有任何SWT。沒有罐子,沒有org文件夾,納達。

在我的Eclipse項目中的Project Explorer下,它列出了「參考庫」,其中設置了SWT內容。當查看它的屬性時,它列出了一堆org.eclipse ...東西。我認爲這是Eclipse知道如何運行,但似乎不導出它。

所以我的問題是:我如何得到與SWT打包在一起的導出項目,以便能夠單獨運行.jar?如果你可以解釋手動方式(即編輯META-INF和拖放所需的SWT文件)並且解釋Eclipse的輸出方式(這樣我不必一直以手動的方式進行操作) ),如果在Eclipse中有辦法做到這一點。

編輯:如果你看到我的回答下面,我解釋我是如何能夠得到這個工作,但是,它轉儲的代碼〜16MB值得進入我的.jar,這對於原本< 1MB項目相當大。如果您對如何使其只添加使用的文件有任何想法,答案仍然值得讚賞。 ;)

回答

0

我成功完成這項工作的方式是將它導出爲可運行的 JAR。

我的步驟使其工作:

運行主類。 (我特別使用了CTRL + F11,這是該類的默認運行方式,讓Eclipse猜測它應該如何運行。)

前往文件>>導出>>運行 JAR。

選擇我的啓動配置。 (當我點擊Juno頂部欄上的運行按鈕旁邊的箭頭時,它會被列出。)

點擊完成鍵並等待!

0

聽起來你不是在使用OSGI,我的建議是去你的eclipse插件目錄,抓住swt jar將它複製到你的插件中,然後通過manifest editor,runtime tab將它添加到classpath中並選擇罐子。如果您正在運行osgi應用程序,請通過轉到.product編輯器依賴關係選項卡並選擇添加所需插件,確保.product文件具有正確的依賴關係。如果您在不同的上下文評論中運行此操作,我會回答。