Umgang mit Klassenpfadkonflikten

8

In meinem Projekt verwende ich sowohl glassfish-embedded 3.1.1 als auch die guava lib ... Das Problem ist, dass glassfish mit der alten Implementierung von guava (dh google-collections) kommt ...

Dies führt zur Laufzeit zu NoSuchMethodError, beispielsweise bei Verwendung von Lists.reverse () oder Sets.newIdentityHashSet (), die später in Guava eingeführt wurden.

Ich finde keine Lösung, um das zu lösen ... (das einzige ist, das Verzeichnis com / google classes im Glassfish-Jar manuell zu löschen ...)

    
sly7_7 30.09.2011, 16:03
quelle

3 Antworten

4

Glassfish hätte die com.google-Klassen niemals in ihrem eigenen Krug enthalten sollen. Das war ein Fehler.

UPDATE [@ sly7_7]: Es sieht so aus, als ob Glasfische Guava nicht mehr in ihrem eigenen Krug enthalten, sondern stattdessen vom Guava-Artefakt. Dies sollte das Problem beheben. Danke an @JagWire für das Aufzeigen.

    
Kevin Bourrillion 01.10.2011, 01:42
quelle
6

Sie können dies überwinden, indem Sie das Folgende spezifizieren. Lesen Sie den Abschnitt Delegierung im Kapitel Klassenladeprogramme

%Vor%

Überprüfen Sie diesen SO-Beitrag zum Laden von Klassen in Java EE-Apps im Allgemeinen: Java EE-Klassenlade-Standard

    
Aravind R. Yarram 30.09.2011 16:19
quelle
0

Ich konnte den Fehler beheben, indem ich den folgenden Build von Glassfish v4 nutze:

Ссылка

Könnte einen Blick wert sein.

    
JagWire 20.02.2014 21:23
quelle