0

このアプリケーションはMapMakerGoogleコレクションのクラスを使用しており、以下の例外が発生していますが、Webstartを使用しているOSX10.4のみです。アプリバンドルから起動した場合、およびOSX10.5とWindowsで正常に動作します。

これは、RC2からRC5へのアップグレード以降に発生し始めました(介在するすべてのバージョンをスキップしました)。その後、1.0 finalにアップグレードしましたが、まだ問題が発生しています。

このセキュリティ問題(WebstartでのURL.toString()の動作方法が変更された)に対するSunの修正との相互作用が疑われますが、まだ証拠がありません。誰かが以前にこの問題を見たことがありますか?どんな助けでも大歓迎です!

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.)
4

2 に答える 2

1

このような場合、SO で助けを求めるよりも、Guava プロジェクトにバグを報告する方がはるかに適切に思えますが、なぜそう思うのかを正確に説明するのに苦労しています。

このスタック トレースは、ライブラリの使用方法が間違っているというよりも、プラットフォームのバグまたはより深い問題である可能性が高いと思われます。

于 2010-01-12T16:52:43.953 に答える
0

jar の manifest.mf ファイルを確認することをお勧めします。おそらく webstart は URLClassLoader を使用するため、ここの説明に従って他の jar を見つけます。

使用している Google ライブラリが webstart で見つからないようです。これは、あなたが言及した修正に関連している可能性があります。

編集:ここに正しいリンクを追加 -> http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html#download

于 2010-01-12T16:52:28.803 に答える