Подтвердить что ты не робот

Нет такой ошибки метода: 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 не выполняются.

4b9b3361

Ответ 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 к моему пути сборки (справа щелкните и добавьте в путь сборки)