java - NoSuchMethodError - Maven 依赖项使用不同的子依赖项

标签 java maven dependencies dependency-management

我在使用具有两个依赖项的项目中遇到问题。一个给第三方库,它使用 Guava 10.0.1,另一个给我的,我使用 Guava 14.0.1。
现在的问题是,10.0.1中有一个方法在14.0.1中被删除了,反过来又在10.0.1之后添加了一个类。
所以我得到一个 NoSuchMethodError 或一个 NoClassDefFoundError。
有什么办法解决这个问题吗?

最佳答案

您可以在自己的项目中使用较旧的 Guava 版本,或者告诉第三方库使用较新的版本(并祈祷它能正常工作)。

您可以使用 maven exclude 标记来确保第三方库不使用它自己的依赖版本。示例:

<dependencies>
    <dependency>
      <groupId>third.party</groupId>
      <artifactId>lib</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>guava</groupId>
          <artifactId>guava</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>

关于java - NoSuchMethodError - Maven 依赖项使用不同的子依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19814493/

相关文章:

gcc - 为什么交叉编译器有两阶段编译?

php - 数据依赖,PHP

java - 在 JDBC 中获取列名

java - 如何在 Java servlet 项目中重用 Thymeleaf 模板(没有 Spring)

maven - 在 Windows 8 上构建 Hadoop 2.6 时出错

java - 如何使用 maven jgit 构建号插件打印构建时间戳和构建号?

c++ - 管理生成文件中的依赖关系复杂性

java - LibGDX Ashley 单独渲染和更新

java - MySQL 集群中的 XA 事务支持?

maven - 在 TeamCity 构建步骤中使用 Maven 属性