java.lang.NoClassDefFoundError: com / Google / common / base / interno / finalizador $ apagado (nombre equivocado: com / Google / common / base / interno / finalizador)

StackOverflow https://stackoverflow.com/questions/2049807

Pregunta

Nuestra aplicación utiliza la clase MapMaker de colecciones de Google, y que está recibiendo la excepción abajo, pero sólo en OS X 10.4 usando WebStart. Funciona bien cuando se lanzó desde un paquete de aplicación, y en OS X 10.5 y Windows.

Esto ha comenzado a suceder ya que nuestra actualización de RC2 a RC5 (nos saltamos todas las versiones intermedias). ya hemos actualizado a 1.0 final y todavía ver el tema.

sospecho algún tipo de interacción con solución de Sun para este problema de seguridad (que cambió la forma en que URL.toString () trabaja en WebStart), pero no tienen ninguna prueba todavía. Alguien ha visto este problema antes? Cualquier ayuda es muy apreciada!

java.lang.NoClassDefFoundError: com/google/common/base/internal/Finalizer$ShutDown (wrong name: com/google/common/base/internal/Finalizer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)
at java.lang.Class.getMethod0(Class.java:2642)
at java.lang.Class.getMethod(Class.java:1579)
at com.google.common.base.FinalizableReferenceQueue.getStartFinalizer(FinalizableReferenceQueue.java:308)
at com.google.common.base.FinalizableReferenceQueue.<clinit>(FinalizableReferenceQueue.java:102)
at com.google.common.collect.MapMaker$QueueHolder.<clinit>(MapMaker.java:836)
at com.google.common.collect.MapMaker$SoftValueReference.<init>(MapMaker.java:1078)
at com.google.common.collect.MapMaker$Strength$2.referenceValue(MapMaker.java:379)
at com.google.common.collect.MapMaker$StrategyImpl.setValue(MapMaker.java:488)
at com.google.common.collect.MapMaker$StrategyImpl.setValue(MapMaker.java:462)
at com.google.common.collect.CustomConcurrentHashMap$Impl$Segment.put(CustomConcurrentHashMap.java:960)
at com.google.common.collect.CustomConcurrentHashMap$Impl.put(CustomConcurrentHashMap.java:1438)`

No parece haber nada interesante en el manifiesto:

$ unzip -p google-collect.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b19 (Sun Microsystems Inc.)
¿Fue útil?

Solución

En un caso como este, parece mucho más apropiado para informar de un problema con el proyecto de guayaba , en lugar de pedir ayuda en el SO, pero estoy luchando para explicar por qué es exactamente lo que creo.

supongo que este seguimiento de la pila apenas se parece mucho más probable que sea un bug o un problema más profundo en la plataforma, que algo que estás haciendo mal en la forma en que está utilizando la biblioteca.

Otros consejos

Le sugiero que consulte el archivo manifest.mf de su frasco. Presumiblemente WebStart utiliza un URLClassLoader, lo que se deduce de la explicación aquí para localizar a otros frascos.

Parece que WebStart no puede encontrar la biblioteca de Google que está utilizando. Esto podría estar relacionado con el arreglo que usted ha mencionado.

Editar añadir el enlace correcto aquí -> http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html#download

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top