我在使用具有两个依赖项的项目中遇到问题。一个给第三方库,它使用 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/