2014-06-19 83 views
5

我製作了一個小型庫,我們稱之爲lib。它dependends另一個庫,sublib這是可以在Maven的中央:IntelliJ未加載maven項目中的傳遞依賴項

lib/pom.xml

<dependencies> 
    <dependency> 
     <groupId>3rdparty</groupId> 
     <artifactId>sublib</artifactId> 
     <version>x</version> 
    </dependency> 
</dependencies> 

現在,我想在我的項目proj使用lib。我已經將它設置爲依賴:

proj/pom.xml

<dependencies> 
    <dependency> 
     <groupId>mynamespace</groupId> 
     <artifactId>lib</artifactId> 
     <version>y</version> 
    </dependency> 
</dependencies> 

當我運行mvn exec:java -D exec.mainClass=mynamespace.proj.Main程序運行正常。 但是如果我的IntelliJ從運行它,我得到以下錯誤:

java.lang.NoClassDefFoundError: 3rdparty/SomeSubLibClass 
    at mynamespace.SomeLibClass.method(SomeLibClass.java:100) 

這似乎表明的IntelliJ不加載傳遞sublib依賴。我怎樣才能解決這個問題?

+1

有時我必須右鍵單擊文件樹中的'pom.xml',然後選擇'maven> reimport'。 (如果你沒有嘗試過) – kuporific

+0

@kuporific謝謝,修復它!我已經嘗試過「同步」和類似的選項,但是還沒有找到......如果你把它作爲答案,我會接受它 – dtech

+0

在這種情況下,「同步」意味着「與文件系統同步」直覺,如果你有大腦上的Maven。 – kuporific

回答

6

您可以手動右鍵單擊文件樹中的pom.xml文件,然後選擇maven > reimport

有時您會看到一個彈出窗口,顯示「需要導入Maven項目」;你應該選擇Enable Auto-Import

Maven auto import popup

此選項可以Preferences > Maven > Importing > [x] Import Maven projects automatically發現(並默認爲未選中):

enter image description here

+0

自動導入雖然,所以,並沒有解決問題 – dtech

+0

我很好奇,如果有人有解決這個問題的想法,當重新導入不解決問題。 – spacemanaki

0

什麼工作對我來說,從使用maven(的IntelliJ)版本變化,用我的最新以前安裝在我的機器上的版本。

相關問題