2011-09-30 8 views
8

W moim projekcie używam zarówno emulacji szkieletowej 3.1.1, jak i guava lib ... Problem polega na tym, że glassfish ma starą implementację guawy (np. Google-collections). ..Jak radzić sobie z konfliktem w klasie classpath

Powoduje to NoSuchMethodError w czasie wykonywania, na przykład podczas korzystania z Lists.reverse() lub Sets.newIdentityHashSet(), które zostały wprowadzone później w guava.

nie znajdę jakieś rozwiązanie, aby rozwiązać ten ... (tylko jeden jest ręcznie kosza com/google klasy Directory w GlassFish słoiku ...)

+0

Czy kiedykolwiek znalazłeś obejście problemu? – JagWire

+1

Niestety, wcale nie ... –

+1

Jeśli ci na tym zależy, znalazłem wbudowaną wersję v4, a problem z klasą classpath zniknął. Możesz znaleźć kompilację tutaj: http://grepcode.com/snapshot/maven.java.net/content/groups/promoted/org.glassfish.main.extras/glassfish-embedded-all/4.0.1-b01 – JagWire

Odpowiedz

4

GlassFish nigdy nie powinno zawierać com.google zajęcia z własnej słoika. To był błąd.

AKTUALIZACJA [@ sly7_7]: Wygląda na to, że szklane rybki nie zawierają już guawy w ich własnym słoiku, ale to zależy od artefaktów z guawy. To powinno rozwiązać problem. Dzięki @JagWire za wskazanie tego.

+0

Tak właśnie myślę. .. i to samo dla slf4j :( –

+0

Czy istnieje rozwiązanie lub obejście problemu pod ręką? – JagWire

6

Można pokonać to być określające poniżej. Przeczytać Delegation section of the Class Loaders chapter.

<class-loader delegate="false" /> 

Sprawdź to SO post dla klasy obciążenia w aplikacjach Java EE w ogóle: Java EE class loading standard

+0

Próbujemy, ale nie działa w naszym przypadku ... To powoduje ClassCastException (prawdopodobnie z powodu tych samych klas załadowanych przez różne programy ładujące klasy) –

Powiązane problemy