Java NoSuchMethodError-Maven依赖项使用不同的子依赖项
我在一个使用有两个依赖项的项目中遇到了一个问题。一个给第三方lib,它使用Guava 10.0.1,一个给我的,我使用Guava 14.0.1。Java NoSuchMethodError-Maven依赖项使用不同的子依赖项,java,maven,dependencies,dependency-management,Java,Maven,Dependencies,Dependency Management,我在一个使用有两个依赖项的项目中遇到了一个问题。一个给第三方lib,它使用Guava 10.0.1,一个给我的,我使用Guava 14.0.1。 现在的问题是,10.0.1中有一个方法在14.0.1中被删除,相反,在10.0.1之后添加了一个类。 因此,我得到一个NoSuchMethodError或一个NoClassDefFoundError。 有什么办法可以解决这个问题吗?您可以在自己的项目中使用较旧的番石榴版本,也可以告诉第三方库使用较新的版本(并祈祷它能起作用) 您可以使用maven ex
现在的问题是,10.0.1中有一个方法在14.0.1中被删除,相反,在10.0.1之后添加了一个类。
因此,我得到一个NoSuchMethodError或一个NoClassDefFoundError。
有什么办法可以解决这个问题吗?您可以在自己的项目中使用较旧的番石榴版本,也可以告诉第三方库使用较新的版本(并祈祷它能起作用) 您可以使用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>
第三方
解放党
1
编译
番石榴
番石榴
我已经找到了这些可能性。不幸的是,排除标记不是一个选项,因为第三方库使用的方法在后来的Guava版本中被删除。此外,更新第三方库的机会微乎其微,因为它不再受到实际支持。。