【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
windows平台开发,在eclipse中使用java如何调用.so文件,试了半天还是不行:
1、java工程项目不是安卓项目,是web项目,
2、.so是linux下生成的动态库,.dll是windows下生成的动态库,网上几乎全部是linux下调用.so动态库,windows下调用.dll动态库
3、安卓工程是使用jni调用.so动态库,在web项目中个人使用了jna去调用.so动态库,错误就在期待下发送了,
报错:java.lang.UnsatisfiedLinkError: Unable to load library 'EcgAnalysis':
但是如果把.so文件换成.dll文件是可以得到这个object的。
特别声明:.so文件只是一些算法,没有linux系统底层的调用
所以:是否能够得出结论,windows下java开发只能调用.dll动态库,linux下java开发只能调用.so动态库,
如果不是,怎么能够在windows下java web项目开发调用.so文件,求各路神仙解惑
是不是win上面安装了EcgAnalysis,linux上面没有安装EcgAnalysis类?
你可以去看一些跨平台的解决方案,例如Eclipse中的插件,需要调用dll/so,它会同时内置两种文件dll/so,然后程序运行的时候,通过获取os.name去判断是windows还是linux,然后通过System.loadLibrary方法去加载对应的版本。
不是说so中没有调用linux的平台windows下就可以调用。dll和so分别是windows和linux下定义的代码库的标准,文件的格式是windows和linux自己定义的,肯定是不兼容的,因此无法实现一个版本多个平台通吃的。
所以,还是按照检测系统、加载不通的库的方式来吧
根据你的表述,应该是环境变量的问题,可能你的linux没有将/usr/lib加入到环境变量中,因此请不要使用System.loadLibrary + 库名称的方式加载,考虑改为System.load(文件绝对路径)的方式加载!
X86 =======Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
x86_64
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: liblog.so: cannot open shared object file: No such file or directory
arm64
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: cannot open shared object file: No such file or directory (Possible cause: can't load this .so (machine code=0xb7) on a AMD 64-bit platform)
mips64
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: cannot open shared object file: No such file or directory (Possible cause: can't load MIPS-bit .so on a AMD 64-bit platform)
mips
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
armeabi-v7a
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
arneabi
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libEcgAnalysis.so: /usr/lib/libEcgAnalysis.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)