2009-08-27 4 views
4

私は、ブラウザで実行され、JavaScriptから呼び出されたアプレットを持っています。 PortalLauncherParamSplitterの2つのクラスがあり、これらはデフォルトのパッケージに含まれています。 Javascriptが順番にParamSplitterで関数を呼び出すPortalLauncherでメソッドを呼び出します。アプレットは署名付きのjarファイルです。java.lang.SecurityException:クラスは、「XYZ」の署名者情報は、同じパッケージに他のクラスの署名者情報と一致しない

これはほとんどの場合動作します。しかし、時にはいくつかのユーザーに問題があります。一日のある時点(すなわちない最初のアクセスで)次の例外がスローされたとき:

java.lang.SecurityException: class "ParamSplitter"'s signer information does not 
    match signer information of other classes in the same package 
    at java.lang.ClassLoader.checkCerts(Unknown Source) 
    at java.lang.ClassLoader.preDefineClass(Unknown Source) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at sun.applet.AppletClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.applet.AppletClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    at PortalLauncher.openFile(PortalLauncher.java:313) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) 
    at sun.plugin.com.MethodDispatcher.invoke(Unknown Source) 
    at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source) 
    at sun.plugin.com.DispatchImpl$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.plugin.com.DispatchImpl.invoke(Unknown Source) 
java.lang.Exception: java.lang.SecurityException: class "ParamSplitter"'s signer 
    information does not match signer information of other classes in the same package 
    at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source) 
    at sun.plugin.com.DispatchImpl$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.plugin.com.DispatchImpl.invoke(Unknown Source) 

誰がこの例外は意味し、それを引き起こしている可能性がありますどのようなものにすべての光を投げることはできますか?このアプレットを持っている約800人のユーザーがいますが、ハンズフリーのみが影響を受けています。

答えて

5

それは同じJVM内で、異なった署名(か多分署名)されている他のjarファイルからロードされた他のクラスがあることを意味し、また、デフォルトのパッケージインチ

私が正しくあなたの質問を解釈する場合は、アプレット自体は一瓶を持っているので、それはどこか別の場所から来たjarファイルでなければなりません。一部のユーザーだけが持っている。 私は最初に、別のタブ(同じjvmインスタンスを使用している可能性があります)で動作しているアプレットのjarファイルであると考えました。しかし、他のアプレットは別のクラスローダーを使用しているはずです。そのように衝突してはいけません。 おそらく、ルートパッケージにクラスも含まれているjvmのブートクラスパスにjarファイルがあります。

いずれかの方法は、溶液/回避策は、デフォルトのパッケージを使用するだけではなく、独自のパッケージ。そうすれば、他の瓶との衝突を避けることができます。

関連する問題