Нет такой ошибки метода: ImmutableList.copyOf()
Я использую Guava-05-snapshot, с Sun JDK 1.6
Код запускает этот фрагмент:
List<String> badpasswords = Lists.newArrayList( Password.badWords);
Collections.sort(badpasswords);
ImmutableList<String> tmp = ImmutableList.copyOf(badpasswords);
В частности, вызов ImmutableList.copyOf().
Этот код работал несколько месяцев, используя старый код Google Collections.
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
Password.badWords
- это ImmutableSet<String>
и создание записываемого массива и сортировка отлично. Но попытки преобразования массива в ImmutableList
не выполняются.
Ответы
Ответ 1
Guava - полностью совместимое дополнение Google Collections - мы ничего не меняли в несовместимом ключе. (Это проверено, запустив весь набор тестовых наборов Google Collections (который является обширным) против последней гитары guava.)
Я считаю, что у вас есть копия google-collect - *. jar по-прежнему делает свой путь в ваш путь к классам. Либо явно, либо потому, что какая-то другая банка включала его, не переупаковывая его. Вам просто нужно найти его и удалить.
В Google Collections был метод ImmutableList.copyOf(Iterable)
, и не было общедоступного метода ImmutableList.copyOf(Collection)
. Это хорошо, потому что коллекция также является итерируемой. В Guava мы добавили перегрузку коллекции. Это полностью совместимо, так как все источники, которые использовались для компиляции, все еще могут, и любой ранее собранный источник просто будет ссылаться на исходный метод.
Проблема возникает, если вы компилируете Guava, а затем выполняете действия против Google Collections. Я считаю, что это, вероятно, происходит.
Ответ 2
Это также отлично подходит для меня, используя официальную (не-снимок) версию guava-r05 от Maven. Кстати, это может быть немного более приятным способом сделать то же самое:
ImmutableList<String> sorted = Ordering.natural()
.immutableSortedCopy(Password.badWords);
Ответ 3
1) скачать guava-XX.X.X.jar из http://code.google.com/p/guava-libraries/
2) в eclipse щелкните правой кнопкой мыши по пути выбора проекта и добавьте эту банку
Ответ 4
Если ошибка возникает при развертывании веб-приложения в WebLogic 12c (но JAR GUAV находится в WEB-INF/lib), следующая конфигурация в weblogic.xml поможет решить эту проблему:
<container-descriptor>
<prefer-application-packages>
<package-name>com.google</package-name>
</prefer-application-packages>
</container-descriptor>
Ответ 5
Использование Guava в комплекте с GWT работало.
Я добавил файлы Guava Jar (версия 13) здесь code.google.com/p/guava-libraries в мою войну /WEB -INF/lib и добавил guava-13.0.1.jar к моему пути сборки (справа щелкните и добавьте в путь сборки)