错误信息:java.lang.UnsatisfiedLinkError: Native Library C:\WINDOWS\system32\javaRD800.dll already loaded in another classloader AAPLET调用本地连接库javaRD800.dll,实现读写IC卡。 读卡和写卡是两个页面,所以打成两个JAR包,两个包下都有一个动态连接库的接口类。
页面引入:
<APPLET NAME="registerApplet" CODE="Register.class" WIDTH="350" HEIGHT="800" archive="icRegister.jar"></APPLET>在写卡那个页面进行操作后,不关闭页面,直接打开读卡那个页面,就报上面那个错。 请问怎样修改? 
加载动态连接库为:
static
{
System.loadLibrary("javaRD800");
}dll放在system32下面。在环境变量PATH中也指定了DLL的位置。 谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【gtliao】截止到2008-07-14 13:41:47的历史汇总数据(不包括此帖):
    发帖的总数量:13                       发帖的总分数:400                      每贴平均分数:30                       
    回帖的总数量:14                       得分贴总数量:3                        回帖的得分率:21%                      
    结贴的总数量:6                        结贴的总分数:180                      
    无满意结贴数:1                        无满意结贴分:100                      
    未结的帖子数:7                        未结的总分数:220                      
    结贴的百分比:46.15 %               结分的百分比:45.00 %                  
    无满意结贴率:16.67 %               无满意结分率:55.56 %                  
    楼主该结一些帖子了
      

  2.   

    在读卡和写卡两个APPLET中,我都是用的new JavaRD800()
    public class JavaRD800
    {
    public JavaRD800()
    {
    }
    static
    {
    System.loadLibrary("javaRD800");
    }
    public native int dc_init(int lPort,int lBaud);
    public native short dc_exit(int lDevice);
    public native short dc_card(int lDevice,short iMode,int[] pSnr);
    public native short dc_authentication(int lDevice,short iMode,short iSecNr);
    public native short dc_authentication(short iMode,short iSecNr);
    public native short dc_halt(int lDevice);
    public native short dc_read(int lDevice,short iAdr,char[] pData);
    public native short dc_write(int lDevice,short iAdr,char[] pData);
    public native short dc_increment(int lDevice,short iAdr,int lValue);
    public native short dc_decrement(int lDevice,short iAdr,int lValue);
    public native short dc_initval(int lDevice,short iAdr,int lValue);
    public native short dc_readval(int lDevice,short iAdr,int[] pValue);
    public native short dc_transfer(int lDevice,short iAdr);
    public native short dc_restore(int lDevice,short iAdr);
    public native short dc_load_key(int lDevice,short iMode,short iSecNr,char[] pKey);
    public native short dc_beep(int lDevice,short iMsec);
    public native short dc_high_disp(int lDevice,short iOffset,short iDispLen,char[] pDispStr);
    public native short dc_request(int lDevice,short iMode,int[] pTagType);
    public native short dc_anticoll(int lDevice,short iBcnt,int[] pSnr);
    public native short dc_select(int lDevice,int lSnr,short[] pSize);
    public native short dc_gettime(int lDevice,char[] pTimeStr);
    public native short dc_gettimehex(int lDevice,char[] pTimeStr);
    public native short dc_settime(int lDevice,char[] pTimeStr);
    public native short dc_settimehex(int lDevice,char[] pTimeStr);
    public native short dc_setbright(int lDevice,short iBright);
    public native short dc_ctl_mode(int lDevice,short iMode);
    public native short dc_disp_mode(int lDevice,short iMode);
    public native short dc_cpureset(int lDevice,short[] pLen,char[] pData);
    public native short dc_cpuapdu(int lDevice,short iLen,char[] pSData,short[] pLen,char[] pRData);
    public native short dc_cpuapdusource(int lDevice,short iLen,char[] pSData,short[] pLen,char[] pRData);
    public native short dc_cpudown(int lDevice);
    public native short dc_swr_eeprom(int lDevice,int lOffset,int lLen,char[] pBuffer);
    public native short dc_srd_eeprom(int lDevice,int lOffset,int lLen,char[] pBuffer);
    public native short dc_disp_str(int lDevice,char[] pDispStr);
    }
      

  3.   

    错误信息:java.lang.UnsatisfiedLinkError: Native Library C:\WINDOWS\system32\javaRD800.dll already loaded in another classloader 
    提示很明显,说明你已经加载过了
      

  4.   


    如何判断已经加载?
    如果用try catch的话,那又会提示找不到动态连接库
      

  5.   


    现在有两个不同的页面,一个页面写卡,一个页面读卡,两个也面都要调用DLL现在的问题是如果先进入写卡页面,在不关闭浏览器的情况下(虚拟机没关闭或退出?),转到读卡页面,就会报错,因为读卡页面又要加载一次DLL想问一下有什么解决办法没???
      

  6.   

    load 之前小 unload 所有的 dll 
    然后再load