在jbuilderX下面怎么使用jni(java native interface),部分代码如下:
public class TJNI {
private boolean isDllLoaded = false;
public boolean getIsDllLoaded() {
return isDllLoaded;
} static {
System.loadLibrary("TJNI");
} public TJNI() {
int result = transInit();
if ( result == 0) {
isDllLoaded = true;
} else {
isDllLoaded = false;
}
}
public native int transInit();
public static void main(String []args)
{
TJNI tJni = new TJNI();
if( tJni.getIsDllLoaded() ) {
System.out.println("Dll Loaded successfully!\n");
transPKGJni.test();
} else {
System.out.println("Failed to load dll");
}
}
}
其中transInit是dll中的函数。在jcreator中我使用了同样的函数,可以通过,因为TJNI.dll可以和TJNI.class放在同一个目录下面,而在jbuilder中,当编译的时候,它只留下了.class文件,而TJNI.class被删除了,于是报错。
javax.servlet.ServletException: Servlet execution threw an exception
java.lang.UnsatisfiedLinkError: no TransPKGJNI in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
希望高手能指点一二。
public class TJNI {
private boolean isDllLoaded = false;
public boolean getIsDllLoaded() {
return isDllLoaded;
} static {
System.loadLibrary("TJNI");
} public TJNI() {
int result = transInit();
if ( result == 0) {
isDllLoaded = true;
} else {
isDllLoaded = false;
}
}
public native int transInit();
public static void main(String []args)
{
TJNI tJni = new TJNI();
if( tJni.getIsDllLoaded() ) {
System.out.println("Dll Loaded successfully!\n");
transPKGJni.test();
} else {
System.out.println("Failed to load dll");
}
}
}
其中transInit是dll中的函数。在jcreator中我使用了同样的函数,可以通过,因为TJNI.dll可以和TJNI.class放在同一个目录下面,而在jbuilder中,当编译的时候,它只留下了.class文件,而TJNI.class被删除了,于是报错。
javax.servlet.ServletException: Servlet execution threw an exception
java.lang.UnsatisfiedLinkError: no TransPKGJNI in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
希望高手能指点一二。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货