gpt4 book ai didi

java - Eclipse Maven 依赖项中存在冲突的 jar

转载 作者:行者123 更新时间:2023-12-01 14:08:05 26 4
gpt4 key购买 nike

当到达在 TopLevelDebugClass.main() 中启动类 Problem 的新实例的行时,我的 Eclipse 项目在运行时出错,显示“未找到源”。请注意,这种情况仅发生在 Eclipse 中,而不是当我在正常控制台模式下运行应用程序时发生。

我已将问题范围缩小到两个 Bouncy CaSTLe 导入语句,当将它们与使用它们的代码一起删除时,问题就消除了。当我使用 mvn dependency:tree 分析 Maven 带入项目的依赖项列表时,我得到以下信息:

[INFO] myGroupId:myArtifactId:jar:1.0-SNAPSHOT
[INFO] +- dpdncyGroupId:dpdncyArtifactId:jar:master:1.0-SNAPSHOT:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.0:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.6.1:compile
[INFO] | +- org.bouncycastle:bcmail-jdk16:jar:1.45:compile
[INFO] | +- org.bouncycastle:bcprov-jdk16:jar:1.45:compile
[INFO] | \- com.google.code.jscep:api:jar:1.1.4:compile
[INFO] | +- org.bouncycastle:bcprov-jdk15:jar:1.45:compile
[INFO] | \- org.bouncycastle:bcmail-jdk15:jar:1.45:compile

其中 myArtifactId 对应于我尝试调试的 Eclipse 项目,其中 TopLevelDebugClass 对应,而 dpdncyArtifactId 对应于同一 Eclipse 中的另一个项目工作区(即 myArtifactId 引用 dpdncyArtifactId)。

冲突的 jar 是 bcprov-jdk16/bcprov-jdk15bcmail-jdk16/bcmail-jdk15。我验证了 16 版本集来自依赖项 pom.xml(顶层以下的第一个节点),而 15 版本集是 jscep(底部)的依赖项。与上面的树列表一致,Eclipse 项目的 Maven 依赖项列出了两组 bcprov-jdk 和 bcmail-jdk,它们包含许多相同的类,其中包括导致问题的导入 (org.bouncycaSTLe .jce.PKCS10CertificationRequestorg.bouncycaSTLe.jce.X509Principal)。

我有理由相信这种歧义导致了 Eclipse(而不是 native JRE)内的争用,因为它不知道从两个 jar 中的哪一个加载类。

我可以在 Eclipse 中执行某些操作来解决此争用,以便我可以在调试器中运行我的项目吗?如果这是 Eclipse 中当前无法解决的错误,则还将考虑如何在 Maven 中解决该问题的任何建议。

最后但并非最不重要的一点是,请注意,我正在从事一份新工作,试图跟上环境的步伐。欢迎提出架构更改建议,但这不是我正在寻找的答案,因为我还无法进行此类更改。本质上,这是由其他人设计的,而我只是一个新人。

最佳答案

com.google.code.jscep:api 的依赖项中,尝试使用 exclusions 节来阻止 Maven 拉入 bcprov-jdk15 Artifact 。请注意,这仅适用于您所描述的情况,即有人愚蠢地在多个 Artifact 中分发同名的类,而不是正确进行版本控制。

关于java - Eclipse Maven 依赖项中存在冲突的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com