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

java maven项目中的库版本冲突

公良鸿禧
2023-03-14

但是B的字节码依赖于加载类的不同版本,在运行应用程序时会导致多个问题。一个常见的方法是methodnotfound exception(因为A版本的http客户机不再使用特定的方法)。

建筑时的一般策略是什么,以避免这种冲突?是否必须手动检查依赖关系树来找出哪些公共库相互交集?

共有1个答案

雍飞雨
2023-03-14

欢迎来到众所周知的maven依赖地狱。随着项目的增长和更多外部依赖项的引入,这是一个比较常见的问题。

除了Apache Commons(在您最初的问题中提到)之外,日志框架(log4j、slf4j)是另一个常见的罪魁祸首。

我同意“Matts”给出的建议,即一旦发现冲突,如何解决冲突。就早期捕捉这些版本冲突而言,您还可以使用maven“Enforcer”插件。请参阅“DependencyConvertiming”配置。也看这个所以帖子。

 类似资料:
  • 问题内容: 在构建具有许多依赖项的Maven项目时,其中一些依赖项依赖于同一库,但使用的版本不同,这会在运行应用程序时导致错误。 例如,如果我添加两个不同的项目依赖项,A和B都依赖于apachecommonshttp客户端,但每个依赖于不同版本,则一旦类加载器加载了A的apachecommons http客户端类,B就会尝试使用它们,因为它们已经由类加载器加载。 但是B的字节码取决于所加载类的不同

  • 问题内容: 是否有Maven的“阶段”或“目标”来简单地执行Java类的主要方法?我有一个项目,希望通过简单地执行诸如“ mvn run”之类的操作来进行手动测试。 问题答案: 请参阅exec maven插件。你可以使用以下命令运行Java类: 调用就像插件配置在中一样简单。Mojohaus上的插件站点上有一个更详细的示例。

  • 我正在做的项目需要同时使用Elasticsearch和一个依赖项(我没有设计也没有指定它的设计),该依赖项使用Lucene,这两个依赖项之间存在版本冲突。当我尝试启动项目时,下面的错误被吐出来 任何关于是否可以解决而不能够规定依赖或弹性搜索的设计的想法?

  • 我正在尝试使用NuGet Package Manager控制台将更改部署到数据库。当我发出命令时,该命令失败,并显示一条错误消息: 我的项目目标。NET 4.5.2,据我所知,它提供了在版本。因此,关联库不会放在二进制输出目录中。当我下载版本(Nuget包版本4.3.2)并将其复制到二进制输出目录,以及我的DLL时,我会收到另一条错误消息: 在这两种情况下,例外情况都是并将其抛出到Microsof

  • 我正在开发一个应用程序和一个库(Android模块)。它们在不交互时没有问题:在导入库后,Android Studio搞乱了设置,我无法恢复。 和其他98个类似的:都与主题问题有关。 还有其他消息引用值、,例如:

  • null 项目包括Kotlin 某些库包括Kotlin 在选项2中,我得到下一个警告: w:类路径中的运行时JAR文件应该具有相同的版本。这些文件位于类路径:/.gradle/caches/transforms-2/files-2.1/ab41544fa06f7b55dec847efe3b9899c/jetified-kotlin-stdlib-jdk7-1.3.71.JAR(版本1.3).gra

  • 我在使用commons-codec库时遇到(NoSuchMethodError)问题,这里有我的POM:`http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0 我使用了exclusions和dependencyManagement,但结果是相同的 有人能告诉我更好的解决这个问题的方法吗?

  • 有一个 lib for selenium org.seleniumhq.selenium:selenium-java : 2.53.1 org.seleniumhq。硒:硒服务器:2.44.0 现在我需要为我在这个项目中的新任务添加selenium服务器依赖项,但在添加selenium服务器依赖项时,我遇到了没有一些类的问题(例如'java.lang.NoClassDefFoundError: o