Как бороться с конфликтом классов - PullRequest
8 голосов
/ 30 сентября 2011

В моем проекте я использую как Glassfish-встраиваемую 3.1.1, так и библиотеку guava ... Проблема в том, что glassfish поставляется со старой реализацией guava (т.е. google-collection) ...

Это приводит к NoSuchMethodError во время выполнения, например, при использовании Lists.reverse () или Sets.newIdentityHashSet (), которые были введены позже в guava.

Я не нахожу никакого решения, чтобы решить эту проблему ... (единственное - вручную удалить каталог com / google classes в банке glassfish ...)

Ответы [ 3 ]

6 голосов
/ 30 сентября 2011

Вы можете преодолеть это, указав ниже.Прочитайте раздел Делегирование главы Загрузчики классов.

<class-loader delegate="false" />

Проверьте этот пост SO для загрузки классов в приложениях Java EE в целом: Стандарт загрузки классов Java EE

4 голосов
/ 01 октября 2011

Glassfish никогда не должен включать классы com.google в свой собственный jar.ОшибкаЭто должно решить проблему.Спасибо @JagWire за указание на это.

0 голосов
/ 21 февраля 2014

Мне удалось устранить ошибку, используя следующую сборку Glassfish v4:

http://grepcode.com/snapshot/maven.java.net/content/groups/promoted/org.glassfish.main.extras/glassfish-embedded-all/4.0.1-b01

Возможно, стоит взглянуть.

...