2013-11-06 6 views
4

У меня проблема в проекте, который использует две зависимости. Один для стороннего lib, который использует Guava 10.0.1, и один для моего, где я использую Guava 14.0.1.
Проблема заключается в том, что существует метод в 10.0.1, который был удален в 14.0.1 и, наоборот, класс, который был добавлен после 10.0.1.
Так что я получаю либо NoSuchMethodError, либо NoClassDefFoundError.
Есть ли способ обойти это?NoSuchMethodError - зависимости от Maven используют разные зависимости.

ответ

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> 
+0

Я уже понял эти возможности. К сожалению, тег исключения не является вариантом, потому что сторонняя библиотека использует метод, который был удален в более поздней версии Guava. Кроме того, вероятность обновления сторонней библиотеки ничтожно, потому что она больше не поддерживается. – martin

Смежные вопросы