BS模式应用,需要调用本地硬件,不想写JNI,发现有JNA貌似可用,测试通过,但是使用applet后各种纠结
jar包已经签名了,jna.jar放在了jre/lib/ext下,dll文件放在了system32下,测试网页执行后,报错找不到类,请指点!
感恩!!
TJEleCard.java  代码
package com.nantian.physicaldevice.iccard;import com.sun.jna.Library;
import com.sun.jna.Native;public class TJEleCard {

public interface yff186 extends Library{
yff186 INSTANCE = (yff186)Native.loadLibrary("yff_sg186", yff186.class);

 int PurchCardCheckMeterType(String ComIn,byte[] ComOut, byte[] MeterType);//卡类型
 
 int PurchCardRead(String ComIn,byte[] ComOut,byte[] Info);//CPU & other
 int FK_PurchCardRead(String ComIn,byte[] ComOut,byte[] Info);//FK
 int PurchCardWrite(String ComIn,byte[] ComOut,String Info);//other
 
}
appplet代码
package ic_Applet;import java.applet.Applet;
import com.nantian.physicaldevice.iccard.TJEleCard;
import com.nantian.physicaldevice.iccard.TJEleCard.yff186;
import com.nantian.physicaldevice.iccard.TJEleCard.yff90;
import com.sun.jna.*;
import com.sun.jna.Native;
import com.sun.jna.Library;
import com.sun.jna.Platform;public class ICApplet extends Applet {
public void init() {
System.out.println("TJ Ele IC card init()方法执行了");
}


public String ICCardType(String ComIn){
/*
 * 卡类型判断
 * IN PARAM :Comin   端口号,COM1.....USB1
 * RETRUN  :s_CardType 卡类型      CC:CPU卡,FK:FK卡      其他表示其他卡
 * 2011/4/13  Lee
 * 
 */

String s_CardType = null;
int i_ret = -1;
byte[] ba_ComOut = new byte[11];
byte[] ba_MeterType = new byte[11];
String s_ComIn = ComIn;

  try{
//读取卡类别
  i_ret = yff186.INSTANCE.PurchCardCheckMeterType(s_ComIn, ba_ComOut, ba_MeterType);
System.out.println("Card Type Check   ret="+i_ret+"||ComOut="+Native.toString(ba_ComOut)+"||CardType="+Native.toString(ba_MeterType));
 s_CardType = Native.toString(ba_MeterType);
     }catch(Exception e){
e.printStackTrace();}
return s_CardType;     
}测试网页代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>
HTML Test Page
</title>
</head>

<SCRIPT language="JavaScript">
function process(){
alert("ENTER");
//var tmp =  document.all.EICard.TestPrint("hello world!");
var tmp = document.all.EICard.ICCardType("COM7");
alert(tmp);

}


</SCRIPT>
<body   onload = "process()">
<br>
<OBJECT style="HEIGHT:0px;LEFT:0px;TOP:0px;WIDTH:0px"
    classid="clsid:CAFEEFAC-0014-0000-0000-ABCDEFFEDCBA"
    NAME = "EICard"
    codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab#Version=1,4,0,0">
    <PARAM NAME = CODE VALUE = "ic_Applet.ICApplet.class" >
<PARAM NAME = CODEBASE VALUE = "." >
<PARAM NAME = ARCHIVE VALUE = "TJECard.jar" >
<PARAM NAME = NAME VALUE = "EICard" >
<PARAM NAME = MAYSCRIPT VALUE = true >    <PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
    <PARAM NAME="scriptable" VALUE="true">
</OBJECT>
</body>
</html>