2011-12-30 78 views
1

我需要創建一個加載DLL本地Java小程序。它工作正常,但只是第一次。如果我刷新頁面,它總是抱怨拋出以下異常:Java小程序的問題:DLL已經加載另一個類加載器

Exception: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Native Library E:\test.dll already loaded in another classloader 

有關如何解決此問題的任何想法?

這裏是我的代碼:

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); 
     } 
    } 
} 

而applet代碼:

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(); 
    } 
} 

我讀過關於這個問題有很多,但仍然無法找到一個解決方案。誰能幫忙?提前致謝。

回答

3

This article似乎提供了一些很好的建議,以確保您獲得每個小程序調用相同的ClassLoader

+0

輝煌,太感謝你了!問題解決了。我一直在着眼於如何解決這個問題,但解決方法是如何在HTML中嵌入applet! – John 2011-12-30 18:38:11

1

我通過添加下面的代碼片段到HTML頁面上的小程序標籤解決同樣的問題。

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

我有以下的小應用程序的JNLP文件PARAM。這可能也是相關的。

<applet-desc ...> 
    <param name="separate_jvm" value="true"/> 
</applet-desc> 
相關問題