depdendent项目中的ClassNotFoundException

时间:2017-08-31 03:42:21

标签: java maven

我有一个像

这样的依赖项的utils项目
 <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:

    <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-simple的类时,它会崩溃

   ClassNotFoundException: joptsimple.OptionException

任何想法为什么我可以在utils包中运行我的主项目没有jopt-simple但是一旦我将它作为依赖项添加它失败了?我已经在我的m2 repo中手动删除了utils包,并重建它以查看是否修复了它但它没有。

1 个答案:

答案 0 :(得分:-1)

您可以尝试以下操作 - 您可以使用系统范围声明依赖项,该系统范围告诉Maven假定特定JAR位于类路径中

因此,maven不会触及此依赖项,您可以手动将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