public class Nox2Key
{ public Nox2Key()
{
} public native int NoxGetLastError(); public native int NoxFind(int i, int ai[], int ai1[]); public native int NoxOpen(int i, String s); public native int NoxReadStorage(int i, int j, byte abyte0[]); public native int NoxWriteStorage(int i, int j, byte abyte0[]); public native int NoxReadMem(int i, byte abyte0[]); public native int NoxWriteMem(int i, byte abyte0[]); public native int NoxClose(int i); static
{
System.loadLibrary("Nox2AppJ");
}
}上面是个class,我在另外一个java程序里面要调用这个类,但是这个类加载时会载入“Nox2AppJ”这个dll文件,第一次加载系统执行正常,第二次再运行我的java程序时,系统又调用了一次这个类,又加载了一次dll文件,然后jvm报错,说已经加载过了,抛出异常,不执行了。请问如何只加载一次调用,然后下次再调用这个类时不再载入dll文件?
{ public Nox2Key()
{
} public native int NoxGetLastError(); public native int NoxFind(int i, int ai[], int ai1[]); public native int NoxOpen(int i, String s); public native int NoxReadStorage(int i, int j, byte abyte0[]); public native int NoxWriteStorage(int i, int j, byte abyte0[]); public native int NoxReadMem(int i, byte abyte0[]); public native int NoxWriteMem(int i, byte abyte0[]); public native int NoxClose(int i); static
{
System.loadLibrary("Nox2AppJ");
}
}上面是个class,我在另外一个java程序里面要调用这个类,但是这个类加载时会载入“Nox2AppJ”这个dll文件,第一次加载系统执行正常,第二次再运行我的java程序时,系统又调用了一次这个类,又加载了一次dll文件,然后jvm报错,说已经加载过了,抛出异常,不执行了。请问如何只加载一次调用,然后下次再调用这个类时不再载入dll文件?
解决方案 »
- jni 怎么调用DLL里的一个方法
- 求解决方案:异构数据库数据同步问题-利用hibernate
- 关于临时文件
- 每天固定时间定时执行
- String类型怎么转换为blob类型
- tomcat5 错误! Cannot create JDBC driver of class
- 有没有正在或已经学会使用SunAppServer的牛人啊来交流一下经验
- 请教一个org.apache.commons.net.ftp.FTPClient的问题!!急!
- TOMCAT 欢迎来看看,这样的信息倒底是怎么回事?
- EJB初学者紧急求救,给我一个简单的jsp+(servlet)+ejb+(sqlserver)+jboss+jbuilder的例子,万分感谢!
- el表达式如何判断时间大小
- 关于报表的多表连接查询(求助!急...)
private void unloadNativeLibs() throws Throwable {
ClassLoader classLoader = this.getClass().getClassLoader();
Field field = ClassLoader.class.getDeclaredField("nativeLibraries");
field.setAccessible(true);
Vector libs = (Vector) field.get(classLoader);
Iterator it = libs.iterator();
Object o;
while (it.hasNext()) {
o = it.next();
System.out.println(o);
Method finalize = o.getClass().getDeclaredMethod("finalize", new Class[0]);
finalize.setAccessible(true);
finalize.invoke(o, new Object[0]);
}
}
}
是web服务器的编译问题。放到servlet中就没问题了,换一种解决方案,呵呵。