我正在尝试运行 Java 应用程序,但出现此错误:java.lang.ClassNotFoundException:冒号后是缺失类的位置。但是,我知道该位置...
我正在尝试运行 Java 应用程序,但出现此错误:
java.lang.ClassNotFoundException:
冒号后面是缺失类的位置。但是,我知道该位置不存在,因为该类位于其他地方。我该如何更新该类的路径?这与类路径有关吗?
我遇到了同样的错误,花了一整天的时间才意识到这是一个依赖冲突问题:
A
和 B
;
A
都 B
依赖于另一个库 C
,但 的版本不同 C
。假设 A
依赖于 C 1.0
并且 B
依赖于 C 2.0
;
B
利用仅存在于的类 C 2.0
;
A
在依赖树中是“更接近”的,所以 Maven C 1.0
同时 A
和 B
,甚至不会向您发出警告(这让我非常震惊);
B
尝试使用仅存在于的类 C 2.0
, ClassNotFoundException
会抛出;
现在奇怪的是:如果你在 IDE 中导航的代码 B
并尝试跳转到仅存在于的类 C 2.0
,它可以正常工作。 C 2.0
确实已安装并且您的 IDE 知道它,但在运行应用程序时它只是被忽略。
这真的让我疯了……
我最终不得不添加 C 2.0
到我的 pom.xml
,以便可以选择它 C 1.0
.
请参阅此帖子,了解 Maven 如何选择最接近的依赖项: https://.com/a/63815140/7438905
您可以使用它 mvn dependency:tree
来可视化依赖关系树。