所以我編寫了一個主類方法,它依賴於另一個依賴於許多jar文件的jar文件。爲了簡單起見,我使用了One-JAR並創建了一個可執行的jar。 我創建的JAR是好的,我可以運行它:Eclipse無法識別我使用One-JAR創建的jar
java -jar foo.jar
這成功地執行我的主要應用。
接下來,我在Eclipse中創建了一個新項目,並通過「添加外部罐子」(我一直這樣做,它始終工作)將foo.jar添加到構建路徑。出於某種原因,在我的Eclipse項目中,它抱怨說它無法識別foo.jar的軟件包導入。
我查看了以前關於Eclipse上jar問題的問題,但沒有任何幫助。我懷疑這與One-Jar創建的樹有關,但由於命令行中的「java -jar foo.jar」工作正常,我不明白爲什麼Eclipse沒有看到類文件。
謝謝!
更新: 這裏有一個-JAR創建了foo.jar中看起來像:
META-INF OneJar.class com doc lib main
內主:
main main.jar
內部這個主要我與應用程序的包樹。類文件。現在,如果我在Eclipse中包含「main.jar」,它確實可以識別我的應用程序。但後來它不能識別lib /下的其他依賴項,因此它會引發運行時異常。
更新2: 所以One-jar和Eclipse的問題沒有解決,但有人提到了這個fat jar Eclipse插件,所以我嘗試了它,它完成了這項工作。它生成的jar與Eclipse和Maven一起工作。他們實際上也支持One-Jar,你可以在創建jar時檢查One-Jar選項。我沒有使用它,但它在那裏(如果它工作,它實際上值得使用,因爲它應該照顧圖書館衝突)。 感謝您的幫助。
one-jar創建的jar只是一個包含類的jar。 – 2012-03-22 16:53:21
對。但是讓我們說我的包是com.example.main,然後它將.class文件放在:main/main/com/example/main/ – user247866 2012-03-22 16:57:11
哦,我明白你在說什麼。我認爲這樣做是爲了避免衝突,類似於陰影的工作方式 - 不確定單個罐子是否具有非束縛選項。 – 2012-03-22 17:27:28