gpt4 book ai didi

java - 为什么 sbt run 工作时 Apache Common 依赖项在 sbt-onejar 下发生冲突?

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:00 25 4
gpt4 key购买 nike

我的项目直接依赖于commons-configuration (1.6),但也以传递方式拉取:commons-beanutils-core (1.8.0) 和 commons-collections (3.2.1)。

最后两个似乎互相冲突,可能是因为它们都在包 org.apache.commons.collections 中定义了类。我想,因为在运行生成的 jar 时(使用 sbt 插件 sbt-onejar 打包),我在输出中看到很多错误,例如:

JarClassLoader: Warning: org/apache/commons/collections/FastHashMap.class in lib/commons-beanutils-core-1.8.0.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)

奇怪的是,当我只是“sbt run”(而不是生成一个 jar 并手动运行它)时,这不会出现。

我做错了什么,还是库内确实存在冲突?

最佳答案

您应该能够了解 sbt update 的依赖关系并查看 target/resolution-cache/reports 下的报告。它们适用于您构建中的每个配置。

如果您可以将构建更新到 sbt 0.13.6(在 project/build.properties 中),则可以使用 evicted 任务。阅读 https://github.com/sbt/sbt/releases/tag/v0.13.6 :

sbt 0.13.6 displays eviction warnings when it resolves your project's managed dependencies via update task.

及以后

To display all eviction warnings with caller information, run evicted task.

它还可以让您深入了解依赖项版本。

一旦您弄清楚什么依赖项带来了受影响类的给定版本,您就可以excludeAll它( as you've ultimately done given the comment )。

关于java - 为什么 sbt run 工作时 Apache Common 依赖项在 sbt-onejar 下发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26143080/

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