java。郎。NoClassDefFoundError:com/google/common/基薪/内部/终结$关机(错误的名称:com/google/common/基薪/内部/终结)

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

我们的应用程序的使用 MapMaker 类从Google集合,并且我们越来越异常低,但只有在OS X10.4使用webstart。它的工作现在启动时从一个应用程序包,以及在OS X10.5和窗户。

这已经开始发生,因为我们升级RC2到RC5(我们跳过所有的中间版本)。我们已经由于升级到1.0最终并仍然看到该问题。

我怀疑一些互动与太阳的修正 这个安全问题 (这改变了该网址。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.)
有帮助吗?

解决方案

在这样的情况下,它似乎更适合于提交错误与番石榴项目,而不是要求对SO的帮助,但我努力解释到底为什么我是这样认为的。

我想这堆栈跟踪只是似乎更可能是一个的漏洞的或在平台上更深层次的问题,不是一些你做错的方式,你正在使用的库。

其他提示

我建议你检查清单。mf文件的罐子。大概是webstart使用URLClassLoader,所以它下述说明在这里找到其他的罐子。

这听起来像webstart不能找到谷歌的图书馆,你正在使用。这可能是相关的修正,你提到过。

编辑: 加正确的链接在这里--> http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html#download

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top