java.lang.noclassDeffoundError: com/google/Common/Base/Internal/Finalizer $ Shutdown (falscher Name: com/google/commor/base/intern/fondizer)

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

Frage

Unsere Anwendung verwendet die MapMaker Klasse aus Google Collections, und wir erhalten die Ausnahme unten, jedoch nur unter OS X 10.4 mit Webstart. Es funktioniert gut, wenn es aus einem App -Bundle gestartet wird, und unter OS X 10.5 und Windows.

Dies geschah seit unserem Upgrade von RC2 auf RC5 (wir haben alle intervenierenden Versionen übersprungen). Wir haben seitdem auf 1.0 Finale aktualisiert und sehen das Problem immer noch.

Ich vermute eine Interaktion mit Suns Fix für Dieses Sicherheitsproblem (die die Art und Weise verändert haben, wie url.tostring () in Webstart funktioniert), haben aber noch keinen Beweis. Hat jemand dieses Problem schon einmal gesehen? Jede Hilfe wird sehr geschätzt!

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)`

Es scheint nichts Interessantes im Manifest zu geben:

$ 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.)
War es hilfreich?

Lösung

In einem Fall wie diesem scheint es viel besser angemessener zu Dateien Sie einen Fehler mit dem Guava -Projekt, anstatt um Hilfe zu bitten, aber ich kämpfe darum zu erklären, warum ich genau denke.

Ich denke, diese Stapelspur scheint nur viel wahrscheinlicher zu sein Insekt Oder ein tieferes Problem in der Plattform, als etwas, das Sie in der Art und Weise, wie Sie die Bibliothek verwenden, falsch machen.

Andere Tipps

Ich schlage vor, dass Sie die Manifest.mf -Datei Ihres Glass überprüfen. Vermutlich verwendet Webstart einen URLClassloader, sodass dies die Erklärung hier folgt, um andere Gläser zu lokalisieren.

Es hört sich so an, als ob Webstart die von Ihnen verwendete Google -Bibliothek nicht finden kann. Dies kann mit der von Ihnen erwähnten Fix zusammenhängen.

Bearbeiten: Fügen Sie hier den richtigen Link hinzu -> http://java.sun.com/developer/books/javapragramming/jar/basics/Manifest.html#download

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top