linux环境下Jnative使用报org.xvolks.jnative.exceptions.NativeException

yuboy123456789 2011-12-29 11:55:10
最近做一个项目: 使用jnative调用动态库(.dll或.a文件),在windows环境下,能够完成dll动态库的调用,但是放到linux下面,改用.a文件格式的动态,jnative在linux下使用的libJNativeCpp.so已经放入/usr/lib路径下,调用时就发生异常:
org.xvolks.jnative.exceptions.NativeException: Library /opt/finger/lib/libBLServerAPI.a not found : /opt/finger/lib/libBLServerAPI.a: invalid ELF header
at org.xvolks.jnative.JNative.nLoadLibrary(Native Method)
at org.xvolks.jnative.JNative.<init>(JNative.java:348)
at org.xvolks.jnative.JNative.<init>(JNative.java:269)
at finger.UserCall.verifyMatch(UserCall.java:55)
at finger.FingerAction.authFinger(FingerAction.java:230)
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)

代码如下:
public int verifyMatch(String fingerAuth, String fingerSign, int matchResult)
throws NativeException, IllegalAccessException {
JNative Something = null;
if (Something == null) {
Something = new JNative("/opt/finger/lib/libBLServerAPI.a", "BLM_VerifyMatch");
// 利用org.xvolks.jnative.JNative 来装载 libBLServerAPI.a BLModuleServerAPI
// FNetSDK_Client.dll,并利用其BLM_OpenModule方法
Something.setRetVal(Type.INT);
// 指定返回参数的类型
}
int i = 0;
Pointer fingerAuthPointer = creatCharPointer();
Pointer fingersignPointer = creatCharPointer();
Pointer resultPointer = creatPointer();

fingerAuthPointer.setMemory(Base64.decode(fingerAuth));
fingersignPointer.setMemory(Base64.decode(fingerSign));

Something.setParameter(i++, fingerAuthPointer);
Something.setParameter(i++, fingersignPointer);
Something.setParameter(i++, resultPointer);

Something.invoke();// 调用方法

return resultPointer.getAsInt(0);
}

请哪位高手知道这是什么问题啊?


...全文
670 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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