java.lang.noclassdeffounderror: com/google/common/base/internal/finalizer $ إيقاف (الاسم الخطأ: com/google/common/base/internal/finalizer)

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

سؤال

يستخدم تطبيقنا MapMaker الفصل من مجموعات Google ، ونحن نحصل على الاستثناء أدناه ، ولكن فقط على OS X 10.4 باستخدام WebStart. إنه يعمل بشكل جيد عند إطلاقه من حزمة تطبيق ، وعلى OS X 10.5 و Windows.

لقد بدأ هذا يحدث منذ ترقيتنا من RC2 إلى RC5 (تخطينا جميع الإصدارات المتداخلة). لقد قمنا بالترقية إلى 1.0 نهائية وما زلنا نرى القضية.

أظن بعض التفاعل مع Sun's Fix for هذه القضية الأمنية (الذي غير الطريقة التي يعمل بها 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.)
هل كانت مفيدة؟

المحلول

في مثل هذه الحالة ، يبدو أن الأمر أكثر ملاءمة تقديم خطأ مع مشروع الجوافة, ، بدلاً من طلب المساعدة في ذلك ، لكنني أكافح لشرح لماذا أعتقد ذلك بالضبط.

أعتقد أن هذا تتبع المكدس يبدو أكثر عرضة ل حشرة أو مشكلة أعمق في النظام الأساسي ، من شيء تفعله خطأ في الطريقة التي تستخدم بها المكتبة.

نصائح أخرى

أقترح عليك التحقق من ملف MAYESTEST.MF من جرة الخاص بك. من المفترض أن WebStart يستخدم urlClassloader ، لذلك يتبع التفسير هنا لتحديد موقع الجرار الأخرى.

يبدو أن WebStart لا يمكن العثور على مكتبة Google التي تستخدمها. يمكن أن يكون هذا مرتبطًا بالإصلاح الذي ذكرته.

يحرر: إضافة الرابط الصحيح هنا -> http://java.sun.com/developer/books/javaprogramming/jar/basics/manifest.html#download

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top