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>
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>
解决方案 »
- 老师叫开发一个类似于百度文库的网站
- 在MyEclipse运行Tomcat出现下面的错误,请高手帮忙解决
- oracle中的时间data类型怎么给他加时间啊
- 怎样取得表格中的某一行,在线等,急!!
- Struts 多行提交及操作
- 网页调用问题,初学JSP请教,高手请入
- jsp连接SQL SERVER7.0/2000问题?
- 请问,getAttribute 怎么用?在线等待
- 奇怪问题:从数据库取值出现的问题。
- 我用的是jrun,请问怎样实现在jsp页面中,鼠标在某个图标上时,该图标所在位置就换成另一个图标
- ibatisnet 分页
- 在ssh2中使用ActionSupport的validate()方法实现表单验证
看到一个说jna+appletlaunch的 也搞不懂
之前我也遇到找不到类 然后我把源码放到src下 不建立包 后来测试通过没报错