2017-08-31 73 views
1

我有了像的ClassNotFoundException在depdendent項目

<dependency> 
     <groupId>org.bouncycastle</groupId> 
     <artifactId>bcmail-jdk15on</artifactId> 
     <version>1.56</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-collections4</artifactId> 
     <version>4.0</version> 
    </dependency> 

依賴關係,然後我的其他項目依賴於一個utils的項目utils的:

<dependency> 
     <groupId>com.mycomp.proj</groupId> 
     <artifactId>utils</artifactId> 
     <version>${utils.version}</version> 
    </dependency> 

這工作得很好沒有問題。然後我說這個包utils的:第一

<dependency> 
     <groupId>net.sf.jopt-simple</groupId> 
     <artifactId>jopt-simple</artifactId> 
     <version>4.9</version> 
    </dependency> 

mvn clean install utils的,那麼我的主要項目,並建立雙方沒有錯誤。但由於某些原因,當我嘗試運行的主要項目,當它到達使用JOPT-簡單的類,它與

ClassNotFoundException: joptsimple.OptionException 

任何想法,爲什麼我可以毫不JOPT,簡單的運行我的主要項目精崩潰utils包,但一旦我將它添加爲依賴失敗?我已經手動刪除了我的m2回購庫中的utils包,並重新構建了它,看看是否修復了它,但沒有修復它。

+2

如果您能夠在沒有依賴關係的情況下構建,那可能意味着類已經存在於類路徑中。介紹該庫可能會導致同一類的多個實現或覆蓋相同的類。你可以分享你使用utils的項目的相關'mvn dependency:tree'。 – nullpointer

+0

下面添加的依賴關係將覆蓋上面的依賴關係。如果你使用的是eclipse,那麼你可以檢查Effective pom。或者在重新依賴的依賴性檢查中確實包含了哪一個。確保該jar沒有在你的項目的任何構建路徑 –

回答

-1

你可以試試以下事項你可以聲明與系統的範圍,它告訴Maven一個特定的JAR被認爲是在類路徑依賴

所以行家不會觸及此依賴,並可以把手動在你的classpath中加入jar。

<dependency> 
    <groupId>net.sf.jopt-simple</groupId> 
    <artifactId>jopt-simple</artifactId> 
    <version>4.9</version> 
    <scope>system</scope> 
</dependency> 

另一種選擇 - 如果你要管理這個jar文件你可以自己手動添加在類路徑或本地回購,然後嘗試在脫機模式下運行Maven。

mvn -o install 
+0

*在離線模式下運行maven *這將如何幫助? – nullpointer

+0

如果用戶在本地repo/classpath中手動添加了jar,那麼它不會從遠程repo下載。所以外部依賴性將會消失。但是,如果您想下載外部依賴項,則無法在脫機模式下運行。 – nagendra547

+0

*用戶已在本地回購/類路徑中手動添加了jar *儘管對我來說似乎不是這樣。 – nullpointer

相關問題