2010-01-12 20 views
0

我們的應用程序使用Google集合中的MapMaker類,在下面得到例外,但只能在OS X 10.4上使用webstart。從應用程序包啓動並在OS X 10.5和Windows上運行時,它工作正常。

自從我們從RC2升級到RC5(我們跳過所有介入版本)後,這種情況就開始發生了。我們已經升級到1.0版本,但仍然看到這個問題。

我懷疑與Sun的修復this security issue(它改變了URL.toString()在webstart中的工作方式)的一些交互,但是還沒有任何證據。有沒有人見過這個問題?任何幫助是極大的讚賞!

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

似乎沒有要任何東西在清單有趣:

$ 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.) 
+0

我很確定它與鏈接安全修復無關,因爲Sun不提供Mac OS的實現。 Tiger和Leopard上的java vm/webstart *版本是否一樣? – 2010-01-12 16:50:32

回答

1

在這樣的情況下,它似乎更適合file a bug with the Guava project,而不是要求對SO的幫助,但我努力解釋爲什麼我確實這麼認爲。

我想這個堆棧跟蹤看起來更像是一個錯誤或平臺上的一個更深層次的問題,而不是您在使用該庫的過程中做錯的事情。

+0

完成:http://code.google.com/p/guava-libraries/issues/detail?id=312 – 2010-01-12 17:59:26