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

mar*_*tin 5 java dependencies dependency-management maven

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

小智 2

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

您可以使用 Maven 排除标签来确保第三方库不使用它自己的依赖项版本。例子:

<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>
Run Code Online (Sandbox Code Playgroud)