java.lang.IllegalAccessException: This function (DLL的函数) is already closed

-John 2011-08-12 03:01:59
异常是没有权限访问..Termb里的函数已经关闭.本人写了一个身份证阅读器的程序,用struts2做的.用JNative加载函数,
在Action调用加载函数的方法.当网站打开的时候点按钮就会读取身份证上的资料..但是如果读完一次.再按一次按钮去读第二次的时候就会出这个错误?为什么呢.我要怎么做呢.
java.lang.IllegalAccessException: This function (CVR_Authenticate in Termb) is already closed
at org.xvolks.jnative.JNative.throwClosed(JNative.java:703)
at org.xvolks.jnative.JNative.dispose(JNative.java:586)
at IdCard.Web.Poject.Model.AppSvrTestConnect.getAuthenticate(AppSvrTestConnect.java:50)
at IdCard.Web.Poject.Action.Connection.execute(Connection.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-John 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luohuijun619 的回复:]
This function (CVR_Authenticate in Termb) is already closed

被关闭了,lz使用前要判断下,要是关闭了就重新打开,跟数据库连接一样
[/Quote]

这个函数是验证卡信息的.你的意思是我要在读取卡的时候判断能力是否为空.
空的话再次调用这个函数咯.
不过我想问题不是这么简单.问题是在于我在主页面把数据发送请求给Action的时候是不会出错的.
然后转过去之后呢..在另外一个页面调用.也是发送请求到同一个Action的.但是就会出错.是我不应该把请求发到同一个Action呢还是什么?
luohuijun619 2011-08-12
  • 打赏
  • 举报
回复
This function (CVR_Authenticate in Termb) is already closed

被关闭了,lz使用前要判断下,要是关闭了就重新打开,跟数据库连接一样
-John 2011-08-12
  • 打赏
  • 举报
回复
如果不关闭的话就出错拉.
softroad 2011-08-12
  • 打赏
  • 举报
回复

finally
{
if(Open!=null)
{
Open.dispose();
}
}

都关闭了
-John 2011-08-12
  • 打赏
  • 举报
回复
代码如下..package IdCard.Web.Poject.Action;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import IdCard.Web.Poject.Dao.Read;
import IdCard.Web.Poject.Model.AppSvrTestConnect;
import IdCard.Web.Poject.Model.Recruitment;

import com.opensymphony.xwork2.ActionSupport;

public class Connection extends ActionSupport {
private String zhuangtai;
private List<Recruitment> list;
public List<Recruitment> getList() {
return list;
}
public void setList(List<Recruitment> list) {
this.list = list;
}
public String getZhuangtai() {
return zhuangtai;
}
public void setZhuangtai(String zhuangtai) {
this.zhuangtai = zhuangtai;
}
public String execute(){
String filepath="C:"+File.separator+"Program Files"+File.separator+"Java"+File.separator+"jdk1.6.0_10"+File.separator+"bin"+File.separator+"wz.txt";

int iRetCOM=0;
int iRetUSB=0;
int readContent=0;
int readcard=0;
AppSvrTestConnect uc = new AppSvrTestConnect();
try
{
int iPort;
for (iPort = 1001; iPort <= 1006; iPort++)
{
iRetUSB=uc.getConnection(iPort);
if (iRetUSB == 1)
{
break;
}
}
for (iPort = 1; iPort <= 4; iPort++)
{
iRetCOM = uc.getConnection(iPort);
if (iRetCOM == 1)
{
break;
}
}
if(iRetUSB==1||iRetCOM==1)
{
zhuangtai="阅读器已连接上";
readcard=AppSvrTestConnect.getAuthenticate();
if(readcard==1)
{
readContent=AppSvrTestConnect.getRead(4);
if(readContent==1)
{
list=Read.readFileByLines(filepath);
if(list==null)
{
zhuangtai="获取资料失败";
}
else
{
zhuangtai="获取资料成功";
}
zhuangtai="读卡操作成功";
}
else
{
zhuangtai="读卡操作失败";
}
}
else
{
zhuangtai="读卡失败请放卡";
}
}
else
{
zhuangtai="连接失败";
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
}


package IdCard.Web.Poject.Model;

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
import org.xvolks.jnative.Type;

public class AppSvrTestConnect {
static JNative Open;
static JNative Authenticate;
static JNative read;
static JNative close;
public int getConnection(int port) throws NumberFormatException, IllegalAccessException, NativeException
{
try{
System.loadLibrary("Termb");
Open=new JNative("Termb","CVR_InitComm");
Open.setRetVal(Type.INT);
Open.setParameter(0,port);
Open.invoke();
int Opens=Integer.parseInt(Open.getRetVal());
return Opens;
}finally
{
if(Open!=null)
{
Open.dispose();
}
}
}


public static final int getAuthenticate () throws NativeException, IllegalAccessException
{
try{
System.out.println("进入卡认证");
System.loadLibrary("Termb");
if(Authenticate==null)
{
Authenticate=new JNative("Termb","CVR_Authenticate");
Authenticate.setRetVal(Type.INT);
}
Authenticate.invoke();
return Integer.parseInt(Authenticate.getRetVal());
}finally
{
if(Authenticate!=null)
{
Authenticate.dispose();
}

}


}
public static final int getRead(int Active) throws NativeException, IllegalAccessException
{
try
{
System.loadLibrary("Termb");
System.out.println("进入读卡操作");
if(read==null)
{
read=new JNative("Termb","CVR_Read_Content");
read.setRetVal(Type.INT);
}
read.setParameter(0,Active);
read.invoke();
return Integer.parseInt(read.getRetVal());
}finally
{
if(read!=null)
{
read.dispose();
}
}

}

public static int closeConenction() throws NativeException, IllegalAccessException
{
try
{
System.loadLibrary("Termb");
if(close==null)
{
close=new JNative("Termb","CVR_CloseComm");
close.setRetVal(Type.INT);
}
close.invoke();
return Integer.parseInt(close.getRetVal());
}finally
{
if(close!=null)
{
close.dispose();
}
}
}

这是连接的代码

}

Struts2配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7 //EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="Selects" namespace="/Select" extends="struts-default">
<action name="Select" class="IdCard.Web.Poject.Action.SelectAction" method="execute">
<result name="success">/selects.jsp</result>
</action>
<action name="Connection" class="IdCard.Web.Poject.Action.Connection" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧