Джунит бросает яву.яз..NoSuchMethodError для com.гугл.общий.собирать.Повторяемый.tryFind


Я использую Google Guava v13. 0, но когда я запускаю тест JUnit с кодом, содержащим tryFind, я получаю следующее сообщение:

java.lang.NoSuchMethodError: com.google.common.collect.Iterables.tryFind(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Lcom/google/common/base/Optional;

Похоже, что это происходит только с тестами JUnit, так как при запуске производственного кода проблем нет. Я использую Intellij IDEA v11. 1. 3 и могу перейти в файл guava JAR, чтобы найти tryFind в com.гугл.общий.собирать.Повторяемый.класс.

Я видел подобные сообщения, но я не уверен, как это относится к JUnit. Есть идеи по поводу того, в чем может заключаться моя проблема?

2 5

2 ответа:

Такого рода ошибки обычно вызваны наличием более старой версии Guava (или даже Google-коллекций) на пути к классу В дополнение к более новой версии, которую вы пытаетесь использовать. Попробуйте проверить, что находится на пути к классу при выполнении теста.

Идите с ответом Колина, вот хороший способ определить, где загружается материал:

System.out.println(
    Iterables.class.getProtectionDomain().getCodeSource().getLocation()
);

Это должно вывести путь к версии guava (или g-c), которую вы используете.