2015-06-18 72 views
1

我在NetBeans中編寫了一個程序,現在想與我的同事共享。然而,當他試圖在他的計算機上運行它,他得到一個錯誤信息:java - 共享可執行文件.jar文件

"Could not find the main class: excelcomparator.ExcelComparator. Program will exit." 

下面是混淆的部分:我寫這在我的筆記本電腦有NetBeans和確保它的工作,複製dist文件夾放到閃存驅動器上,然後在我的電腦上運行它。它運行良好。當我通過電子郵件發送給我的同事時,他得到了這個錯誤。

基於我所見,一些解決方案是從命令行運行.jar。雖然這可能工作,我需要該文件是雙擊。

我派我的同事通過郵件文件中的壓縮文件夾,是有可能,解壓整個文件夾也搞砸.jar文件(不明白爲什麼它應該,但包括任何可能幫助)?

這是在.jar文件中的MANIFEST.mf。有一個在文件的最後一個回車,它只是沒有很好複製到這個文本框:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.4 
Created-By: 1.7.0_71-b14 (Oracle Corporation) 
Class-Path: lib/poi-3.12-20150511.jar lib/poi-examples-3.12-20150511.j 
ar lib/poi-excelant-3.12-20150511.jar lib/poi-ooxml-3.12-20150511.jar 
    lib/poi-ooxml-schemas-3.12-20150511.jar lib/poi-scratchpad-3.12-2015 
0511.jar 
X-COMMENT: Main-Class will be added automatically by build 
Main-Class: excelcomparator.ExcelComparator 

我打發dist文件夾,包括其中包含的所有附加.jar文件的文件夾lib

如果還有其他相關信息需要包括,請告訴我。謝謝!

+0

你的程序依賴於很多應該位於lib文件夾中的jar文件。你是否也將它們發送給你的同事?什麼是異常的完整堆棧跟蹤?從命令行使用java -jar yourjar.jar。 –

+0

@JBNizet在我的機器上沒有拋出異常,我的同事沒有從命令行運行它。出現的唯一錯誤是帶有錯誤消息的彈出窗口。我確實包含了額外的jar文件,並相應地將其編輯到問題中。謝謝! – Salmononius2

+0

1.你的同事應該把lib文件夾和他正在運行的jar文件放在同一個目錄下。他有嗎?如果他只有dist文件夾,它將不會拾取jar文件2.您的包是否是主類? – melis

回答

0

如果您希望JAR是可雙擊的,那麼您應該將所有依賴關係捆綁到單個JAR文件中。

你實現這個使用Maven的組裝插件:http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

如果你不知道如何使用Maven,Eclipse有一個很好的嚮導。我不確定它如何在NetBeans上運行,但同樣的問題已經被多次詢問,例如這裏Netbeans Export to Jar, include all library files

+0

另一個有用的鏈接可能是:http://arunasujith.blogspot.de/2011/08/how-to-build-fat-jar-using-netbeans.html –

+0

我使用eclipse,(文件導出),從來沒有一個問題與它。但是,它可能取決於計算機的安全設置是否可以雙擊一個罐子。有時您必須右鍵單擊並以管理員身份運行。 –

+0

標準jar格式不允許在jar文件中嵌入jar文件。這需要使用特殊的類加載器。在jar文件外捆綁庫是標準的做法。 –

0

只是爲了完成這一關,我會寫什麼最終爲我工作:

按弗蘭茨·貝克爾的建議based on this question,我捆起整個程序到一個單一的.jar文件。

我的同事電腦仍然出現同樣的錯誤,所以根據我看到的其他建議,我猜想這個問題是基於我們電腦上安裝的不同版本的Java。我所做的是將該程序重新編譯爲早期版本的Java,該版本可以從任何版本開始使用(其他人建議在用戶計算機上重新安裝Java)。在大多數情況下,這太不切實際了。

要更改合規性級別(在Eclipse中):右鍵單擊Package Explorer中的項目,選擇屬性。在左邊的選項中選擇Java Compiler。在'Java Build Path'中取消勾選'使用合規執行環境[默認目標JavaSE]',並將'編譯器合規性級別'更改爲您選擇的級別(我選擇了最低的選項1.3,因爲我假設任何高於不會是一個問題)。然後我導出文件(文件 - >屬性 - > Java - >可運行JAR文件),並有一個工作,可點擊.jar。

感謝大家的幫助!