2011-09-30 8 views
8

Nel mio progetto, sto usando sia 3.1.1 glassfish incorporato che la lib di guava ... Il problema è che il glassfish viene fornito con la vecchia implementazione di guava (es. Google-collections). ..Come affrontare il conflitto del percorso di classe

Questo risulta in NoSuchMethodError in fase di esecuzione, ad esempio quando si utilizza Lists.reverse() o Sets.newIdentityHashSet() che sono stati introdotti in seguito in guava.

non trovo alcuna soluzione per risolvere questo ... (l'unico è quello di buttare manualmente il com/google directory classi nel vaso GlassFish ...)

+0

Hai mai trovato una soluzione alternativa? – JagWire

+1

Sfortunatamente, per niente ... –

+1

Nel caso ti interessi, ho trovato una build v4 incorporata e il problema del classpath è andato via. Puoi trovare la build qui: http://grepcode.com/snapshot/maven.java.net/content/groups/promoted/org.glassfish.main.extras/glassfish-embedded-all/4.0.1-b01 – JagWire

risposta

4

Glassfish non avrebbe mai dovuto incluso classi com.google nel loro vaso. Quello era un errore

AGGIORNAMENTO [@ sly7_7]: Sembra che il pesce vetro non includa più guava nel proprio barattolo, ma dipende invece dall'artefatto guava. Questo dovrebbe risolvere il problema. Grazie a @JagWire per indicare questo.

+0

Questo è quello che penso. .. ed è la stessa cosa per slf4j :( –

+0

Esiste una soluzione o una soluzione alternativa al problema? – JagWire

6

È possibile superare questo essere specificando la sotto. Leggi la Delegation section of the Class Loaders chapter.

<class-loader delegate="false" /> 

Scegli questa SO inviare per la classe di carico nelle applicazioni Java EE in generale: Java EE class loading standard

+0

Lo proviamo, ma nel nostro caso non funziona ... Questo risulta in ClassCastException (probabilmente a causa delle stesse classi caricate da diversi classloader) –

Problemi correlati