当前位置: 首页 > 知识库问答 >
问题:

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

况明贤
2023-03-14

我的项目直接依赖于Commons-配置(1.6),但也在过渡拉动:Commons-beanutils-core(1.8.0)和Commons-集合(3.2.1)。

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

JarClassLoader:警告:org/apache/commons/collections/FastHashMap。在lib/commons-beanutils-core-1.8.0中初始化。jar被lib/commons-collections-3.2.1隐藏。jar(具有不同的字节码)

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

我是做错了什么,还是LIB内部真的存在冲突?

共有1个答案

裴彦
2023-03-14

您应该能够通过sbt update了解依赖关系并查看目标/分辨率-缓存/报告下的报告。它们适用于您构建中的每个配置。

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

SBT 0.13.6在通过更新任务解析项目的托管依赖项时显示逐出警告。

以及以后

要显示包含调用方信息的所有收回警告,请运行收回的任务。

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

一旦您弄清楚了什么依赖关系带来了受影响类的给定版本,您就可以排除它(正如您在给出注释后最终所做的那样)。

 类似资料:
  • 我已经下载了SBT 0.3.15,我正在尝试运行它:现在,我只想运行SBT并获得提示;我还没有处于我想构建项目的阶段(尽管我希望能够很快完成)。 然而,我面临着SBT试图下载的奇怪依赖项的问题。我最初面临代理的问题,但现在好多了。SBT尝试下载的第一件事是pom。jansi项目1.11的xml及其工作原理: 它尝试下载的下一个文件是fusesource-pom-1.8。Maven central

  • 我有一个sbt插件项目,使用多项目构建。我想使用这个插件作为其他sbt项目的依赖项。我已经创建了一个插件,但是当我把这个插件添加到project中时,我似乎不能正确地连接依赖项。 我在这里漏掉了什么?

  • 我在创建新项目后使用android studio 3.0.1,它会给出以下错误: 错误:任务“:app:preDebugAndroidTestBuild”的执行失败。 与项目“:app”中的依赖项“com.android.support:support-annotations”冲突。应用 (26.1.0) 和测试应用 (27.1.1) 的已解决版本有所不同。有关详细信息,请参阅 https://d

  • 我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过

  • 我试图创建一个maven项目,并在以后添加Spring Boot依赖项,但我一直在maven插件上得到错误高亮显示。下面是截图:Maven Projects截图来自intellij