2011-09-30 40 views
8

En mi proyecto, estoy usando glassfish-embedded 3.1.1 y guava lib ... El problema es que Glassfish viene con la antigua implementación de guayaba (es decir google-collections). ..Cómo lidiar con el conflicto classpath

Esto da como resultado NoSuchMethodError en tiempo de ejecución, por ejemplo cuando se usa Lists.reverse() o Sets.newIdentityHashSet() que se introdujeron más adelante en guava.

no encuentro ninguna solución para resolver este ... (el único que es a la basura manualmente el com/google directorio de clases en el frasco glassfish ...)

+0

¿Alguna vez encontró una solución? – JagWire

+1

Desafortunadamente, para nada ... –

+1

En caso de que te importe, encontré una compilación de v4 incrustada y el problema de classpath desapareció. Puede encontrar la compilación aquí: http://grepcode.com/snapshot/maven.java.net/content/groups/promoted/org.glassfish.main.extras/glassfish-embedded-all/4.0.1-b01 – JagWire

Respuesta

4

Glassfish nunca se debería haber incluido clases com.google en su propio frasco. Eso fue un error

ACTUALIZACIÓN [@ sly7_7]: Parece que glassfish ya no incluye guayaba en su propio frasco, pero depende del artefacto de guayaba. Esto deberia resolver el problema. Gracias a @JagWire por señalar esto.

+0

Eso es lo que creo. .. y es lo mismo para slf4j :( –

+0

¿Hay una solución o una solución al problema en cuestión? – JagWire

6

Puede superar este se especifica el abajo. Lea el Registro Delegation section of the Class Loaders chapter.

<class-loader delegate="false" /> 

este SO de destino para la carga de clases en aplicaciones Java EE en general: Java EE class loading standard

+0

Lo intentamos, pero no funciona en nuestro caso ... Esto da como resultado ClassCastException (probablemente debido a las mismas clases cargadas por diferentes clasificadores) –

Cuestiones relacionadas