Java Depdent项目中的ClassNotFoundException

Java Depdent项目中的ClassNotFoundException,java,maven,Java,Maven,我有一个utils项目,它有如下依赖项 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcmail-jdk15on</artifactId> <version>1.56</version> </dependency> <dependency>

我有一个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包中不使用jopt simple就可以很好地运行我的主项目,但一旦我将其作为依赖项添加,它就会失败吗?我已经在我的m2 repo中手动删除了utils包,并重新构建了它,以查看是否修复了它,但它没有

您可以尝试以下操作-您可以使用系统范围声明一个依赖项,它告诉Maven某个特定的JAR假定在类路径中

因此maven不会触及这个依赖项,您可以手动将jar放入类路径中

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

如果您能够在没有依赖项的情况下进行构建,那可能意味着该类已经存在于类路径中。引入该库可能会导致同一类的多个实现或对同一类的重写。您是否可以共享您正在使用UTIL的项目的相关
mvn dependency:tree
。下面添加的依赖项将覆盖上面的依赖项。如果您使用的是eclipse,那么可以检查有效的pom。或者在reslove依赖项中检查实际包含了哪一个。确保jar不在脱机模式下运行maven的项目的任何构建路径中,这会有什么帮助?如果用户已在本地repo/classpath中手动添加jar,则不会从远程repo下载。因此,外部依赖将消失。但是,如果您想下载外部依赖项,则不能在脱机模式下运行。用户已在本地repo中手动添加了jar,但我认为情况并非如此。如果用户希望手动管理jar,也可以选择此选项。我在回答中更新了它。你回答的问题和OP提出的问题略有不同,而且你给出的建议很糟糕。我觉得你的意见不仅无助于解决眼前的问题,而且如果OP听从你的建议,对他来说会更糟(也就是说,你增加了混乱)。
    <dependency>
        <groupId>net.sf.jopt-simple</groupId>
        <artifactId>jopt-simple</artifactId>
        <version>4.9</version>
    </dependency>
   ClassNotFoundException: joptsimple.OptionException
<dependency>
    <groupId>net.sf.jopt-simple</groupId>
    <artifactId>jopt-simple</artifactId>
    <version>4.9</version>
     <scope>system</scope>
</dependency>
mvn -o install