нет такой ошибки метода: ImmutableList.copyOf () - PullRequest
31 голосов
/ 27 июня 2010

Я использую снимок Guava-05 с 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 не удаются.

Ответы [ 5 ]

45 голосов
/ 27 июня 2010

Guava - полностью совместимый расширенный набор Google Collections - мы ничего не изменили несовместимым образом.(Это проверено запуском всего набора тестов Google Collections (который обширный ) против самого последнего фляги гуавы.)

Я полагаю, у вас есть копия google-collect - *. Jarвсе еще пробивается в ваш путь к классам.Либо явно, либо потому, что какой-то другой jar включил его, не перепаковывая его.Вам просто нужно найти и удалить его.

В Google Collections был метод ImmutableList.copyOf(Iterable), и не было общедоступного метода ImmutableList.copyOf(Collection).Что хорошо, потому что коллекция также итеративна.В Гуаве мы добавили перегрузку Коллекции.Это полностью совместимо, так как все источники, которые раньше использовались для компиляции, все еще могут, и любой ранее скомпилированный источник будет по-прежнему ссылаться на оригинальный метод.

Проблема возникает, если вы компилируете в Guava, но затем запускаете в Google Collections.Я полагаю, что это, вероятно, то, что происходит.

3 голосов
/ 27 июня 2010

Этот также отлично работает для меня, используя официальный (не снимок) релиз guava-r05 от Maven.Кстати, это может быть немного более приятный способ сделать то же самое:

ImmutableList<String> sorted = Ordering.natural()
    .immutableSortedCopy(Password.badWords);
2 голосов
/ 06 мая 2014

Если ошибка возникает при развертывании веб-приложения в WebLogic 12c (но JAV-файл guava находится в WEB-INF / lib), следующая конфигурация в weblogic.xml поможет ее решить:

<container-descriptor>
    <prefer-application-packages>
        <package-name>com.google</package-name>
    </prefer-application-packages>
</container-descriptor>
1 голос
/ 03 апреля 2014

1) загрузить файл guava-XX.X.X.jar из http://code.google.com/p/guava-libraries/ 2) в eclipse щелкните правой кнопкой мыши по проекту, выберите путь сборки и добавьте этот jar

0 голосов
/ 29 октября 2012

Использование Guava в комплекте с GWT сработало.

Я добавил оба файла Guava Jar (версия 13) отсюда code.google.com/p/guava-libraries в мою войну / WEB-INF / lib и добавил guava-13.0.1.jar в путь сборки (справа) нажмите и добавьте для построения пути)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...