错误信息: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的位置。 谢谢
页面引入:
<APPLET NAME="registerApplet" CODE="Register.class" WIDTH="350" HEIGHT="800" archive="icRegister.jar"></APPLET>在写卡那个页面进行操作后,不关闭页面,直接打开读卡那个页面,就报上面那个错。 请问怎样修改?
加载动态连接库为:
static
{
System.loadLibrary("javaRD800");
}dll放在system32下面。在环境变量PATH中也指定了DLL的位置。 谢谢
楼主【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 %
楼主该结一些帖子了
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);
}
提示很明显,说明你已经加载过了
如何判断已经加载?
如果用try catch的话,那又会提示找不到动态连接库
现在有两个不同的页面,一个页面写卡,一个页面读卡,两个也面都要调用DLL现在的问题是如果先进入写卡页面,在不关闭浏览器的情况下(虚拟机没关闭或退出?),转到读卡页面,就会报错,因为读卡页面又要加载一次DLL想问一下有什么解决办法没???
然后再load