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);
}

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


...全文
699 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕“基于虚拟同步发电机的多逆变器并联改进控制策略”展开,系统研究了微电网环境下多逆变器系统的协同运行与控制问题。重点内容包括虚拟同步发电机(VSG)技术在双机并联系统中的应用,实现有功与无功功率的精确分配(均分或按比例)、微电网黑启动控制、虚拟阻抗的引入以有效抑制环流,以及预同步并网控制策略的设计与实现。文中依托MATLAB/Simulink平台构建了详细的仿真模型,对所提出的各项控制策略进行了全面的仿真验证,确保系统在负载突变、并网/离网切换等动态工况下具备优异的稳定性、动态响应特性和功率均分精度。此外,文档还列举了大量相关的电力系统科研方向与可复现课题,如储能系统优化、无功补偿、配电网重构、智能优化算法应用等,充分体现了MATLAB/Simulink在现代电力电子与新能源并网技术科研中的核心支撑作用。; 适合人群:具备电力电子技术、自动控制原理及微电网基础知识,从事电气工程、新能源发电、智能电网等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入掌握虚拟同步发电机(VSG)在多逆变器并联系统中的功率分配、惯量支撑与一次调频调压机制;②学习并实践微电网黑启动、环流抑制、预同步控制等关键环节的仿真建模与控制算法设计;③借助文中丰富的科研案例与仿真资源,开展高水平学术论文的复现工作或进行创新性课题的研究与开发; 阅读建议:建议结合文中提及的Simulink仿真模型与网盘提供的完整资源,坚持理论学习与动手实践相结合,重点关注控制策略的设计思路、模块化搭建方法及仿真参数的整定过程,同时关注公众号“荔枝科研社”以获取持续的技术支持与资料更新。

51,409

社区成员

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

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