2012-01-06 90 views
0

我有一個巨大的項目(應用程序)與其中的另一個項目(核心)。應用程序與Core一樣有一大套庫。我使用的是Eclipse,因此我使用Export Runnable Jar選項來創建Application.jar,但是當我運行它時,代碼的一部分使用了對其中的圖像庫具有依賴性的Core。當我查看可運行jar文件時,Application項目的所有庫都存在,但是當我查看Core項目jar文件時,庫不在那裏。爲了讓你知道我期待的結構,我期待如下所示:如何構建一個具有內部jar文件的內部jar文件的可運行jar?

Application 
    - Core.jar 
    + ImageLibrary.jar 
    + OtherLibraries.jar 
    : 
    + OtherLibraries.jar 
    : 

我正在使用Maven單獨構建項目。但是我並不是Maven的專家,因爲我只用了很短的時間。

是否有可能建立應用程序,以便Core也有它的庫?

在此先感謝, 阿列克謝藍。

+0

http://stackoverflow.com/questions/5000351/adding-jar-libraries-into-jar-file和其他幾個問題的副本 – milan 2012-01-06 10:33:29

+0

檢查可執行jar內的Manifest,這應該包括正在使用的classpath,核心內的罐子不包括在內,因此它們被忽略。 – 2012-01-06 10:35:38

+0

我檢查了清單文件,但Core不在其中(希望我說得對,只有一個清單文件)。然而,Core被聲明爲依賴於我的pom.xml,所以Maven應該選擇它。它可以訪問Core內的類,這是在Core調用圖像庫中的類時拋出ClassNotFoundException的時候。 – 2012-01-06 10:52:25

回答

0

好吧,所以我最終想出了這一個。當我使用Maven構建項目時,它正在這樣做,然後不更新eclipse中的構建路徑。所以,我在覈心目錄,我跑:

# mvn clean install 
# mvn eclipse:eclipse 

由於圖像庫是一個除了核心的依賴關係,我不得不確保Eclipse的構建路徑設置,否則Eclipse將不會拿起變化。 eclipse:eclipse命令爲我做了這個,但我認爲它只適用於一個模塊的項目,但它會讀取您的pom文件中的任何依賴項,並確保您的項目可以看到並訪問它們。

然後在應用程序目錄我重新建項目:

# mvn clean install 

然後從Eclipse中我導出應用項目作爲其工作正常運行的JAR。

希望這可以幫助任何人有同樣的問題。

乾杯, Alexei Blue。

0

在您的Maven構建應用程序中,Core是否未指定爲依賴項?如果是這樣,它應該包含在它的所有依賴中。您應該檢查依賴項本身是否包含Maven中的正確範圍。

+0

是的,依賴是在我的pom.xml文件中Maven應該選擇的。但是由於某種原因它沒有出現在清單中。 – 2012-01-06 10:45:16

+0

不在清單中,或者不在整個廣告瓶/戰爭/耳朵本身中? – TrueDub 2012-01-06 13:57:29

+0

Core不會出現在清單中,但Jar文件出現在可運行的Jar – 2012-01-06 14:53:52