Conflicto de Classloader, diferentes definiciones de clase
-
11-12-2019 - |
Pregunta
Usando el marco Play 2.0.2, me encuentro con un conflicto de Classloader.Parece que hay dos definiciones de la misma clase en diferentes gestores de clases.La consola se ejecuta, pero cuando emite el comando 'Ejecutar', el juego responde con:
java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "play.api.PlayException.cause()Lscala/Option;"
the class loader (instance of sbt/PlayCommands$$anonfun$61$$anonfun$63$$anon$2) of the current class, play/api/PlayException,
and the class loader (instance of java/net/URLClassLoader) for interface
play/api/PlayException$UsefulException have different Class objects for the
type scala/Option used in the signature
¿Alguien tiene un buen lugar para comenzar a depurar esto?¿O alguna idea de por qué esto está ocurriendo?Claramente, la clase está siendo cargada por diferentes cargadores, pero no estoy familiarizado con la configuración de Play Carger.
Tengo instalada SCALA & SBT utilizando el puerto
sbt @0.11.2_0 (active)
scala2.9 @2.9.2_0 (active)
Mi camino ha jugado antes de los binarios del puerto.
utilizando java
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-10M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)
Ejecutar el leopardo de la nieve
Solución
Resulta que el puerto SBT había creado un directorio ~ / .SBT y esa configuración se prefiere.Eliminar / mover ese directorio a otra cosa resuelve el problema.