2011-12-30 12 views
1

にロードされました。それは正常に動作しますが、初めての場合のみです。私はページを更新する場合は、必ず次の例外をスローすることによって文句:Javaアプレットの問題:DLLがすでに私は地元のDLLをロードするJavaアプレットを作成する必要があり、別のクラスローダ

私はこの問題を解決する方法上の任意のアイデア
Exception: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Native Library E:\test.dll already loaded in another classloader 

?私はこの問題について多くのことを読んだことがあるが、まだ解決策を見つけることができません

public class MyApplet extends Applet { 

    private static NativeWrapper dll = new NativeWrapper("e:/test.dll"); 

    public MyApplet() { 
    } 

    // to be called by javascript on html page 
    public string GetIPAddress() { 
     return dll.GetIP(); 
    } 
} 

public class NativeWrapper 
{ 
    public native String GetIP(); 

    public NativeWrapper(final String nativeLib) { 
     try { 
      System.load(nativeLib); 
     } catch (UnsatisfiedLinkError e) { 
      System.out.println("UnsatisfiedLinkError exception" + e); 
     } 
    } 
} 

そして、アプレットコード:

は、ここに私のコードです。誰も助けることができますか?前もって感謝します。

答えて

3

This articleは、アプレット呼び出しごとに同じClassLoaderを取得するための良いアドバイスを提供するようです。

+0

すごくありがとう!問題は解決しました。私はいつもJavaのソースコードでこの問題を修正する方法を見ていますが、修正はHTMLにアプレットを埋め込む方法です! – John

1

私は、HTMLページにアプレットタグに次のスニペットを追加することで、同じ問題を解決しました。

<param name="classloader_cache" value="false"> 

私はアプレットのJNLPファイルに次のparamを持っています。それも関連しているかもしれません。

<applet-desc ...> 
    <param name="separate_jvm" value="true"/> 
</applet-desc>