【问题标题】:NoSuchMethodError - Maven dependencies use different subdependenciesNoSuchMethodError - Maven 依赖项使用不同的子依赖项
【发布时间】:2013-11-17 19:58:42
【问题描述】:

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

【问题讨论】:

    标签: java maven dependencies dependency-management


    【解决方案1】:

    您可以在自己的项目中使用旧的 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>
    

    【讨论】:

    • 我已经想通了这些可能性。不幸的是,排除标签不是一个选项,因为第三方库使用了在更高版本的 Guava 中删除的方法。此外,更新第三方库的机会微乎其微,因为它不再受到积极支持..
    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多