java读取.so文件,本地可以,部署到linux后报错,求解!!

TommyWu01 2021-02-02 07:27:54

项目中,需要用到C库,通过JNI进行调用,C库打包文件名称为:libecgqrs.dll、libecgqrs.so.

我在本地windows系统下测试过了,java加载.dll和.so文件都是没有问题。

本地加载方式为: System.load("D:/libecgqrs.dll"); 或者 System.load("D:/libecgqrs.so"); 这两种都测过,没有问题的。

阿里云ECS中加载方式为: System.load("/home/ecglibfile/libecgqrs.so"); 或者System.load("/home/ecglibfile/libecgqrs.dll"); 加载方式一样,只是绝对路径不同,这两种都加载失败,报错信息如下:

Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/ecglibfile/libecgqrs.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: /home/ecglibfile/libecgqrs.so: /home/ecglibfile/libecgqrs.so: invalid ELF header (Possible cause: endianness mismatch)

Caused by: java.lang.UnsatisfiedLinkError: /home/ecglibfile/libecgqrs.so: /home/ecglibfile/libecgqrs.so: invalid ELF header (Possible cause: endianness mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)

做过这方面的兄弟们,知道这是为什么不? 在线求解~~~~
...全文
873 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
debugeeker 2021-02-24
  • 打赏
  • 举报
回复
windows下只识别pe格式,linux下识别elf格式。你这个so编译有问题,需要放在linux下编译或者使用交叉编译器在windows下编译
sxysoft_csdn 2021-02-23
  • 打赏
  • 举报
回复
windows 下如果能读取 so 文件,说明 so 文件不是 linux 格式,错误信息已经说明 so 文件不是 ELF 格式的动态库,两个不同的操作系统
幽饮烛 2021-02-23
  • 打赏
  • 举报
回复
windows 下如果能读取 so 文件,说明 so 文件不是 linux 格式,错误信息已经说明 so 文件不是 ELF 格式的动态库
烟花苏柳 2021-02-07
  • 打赏
  • 举报
回复
参考这篇即可:https://blog.csdn.net/sinat_33761963/article/details/83024619
aabbabababaa 2021-02-07
  • 打赏
  • 举报
回复
系统32位还是64位?
课程声明:该课程是教学使用,视频内涉及漏洞利用方法,请勿在互联网环境中使用;维护互联网安全,人人有责。 适合人群:零基础的大学生、IT技术人员、信息安全从业者、安全运维工程师、渗透测试工程师、漏洞挖掘工程师、白帽子 课程大纲(不完全、可能会在后期加入新的内容):1.攻防环境搭建2.信息收集3.PHP常见危险函数4.Kali Linux常用工具使用方法5.SQL注入原理及利用方法(宽字节注入、delete注入、update型注入、mysql函数报错、延时注入、联合注入、waf绕过等)6.XSS原理及利用方法7.CSRF原理及利用方法8.SSRF原理及利用方法9.文件上传漏洞原理及利用方法10.文件包含读取、代码执行、命令执行原理及利用方法11.逻辑漏洞原理及利用方法12.BurpSuite各个模块使用方法13.MSF后渗透使用方法14.Appscan、AWVS、Nessus、bogy等漏洞扫描器使用方法15.Sqlmap、nmap、中国菜刀等工具使用方法16.目录爆破原理及各个工具使用17.Windows及Linux系统提权18.常见getwebshell方法19.渗透测试面试技巧20.密码暴力破解21.内网攻防22.python开发poc23.Android渗透测试24.搜索引擎的高级用法 学习目标:掌握kali Linux渗透测试技巧、掌握常见漏洞检测及利用方法、全部学习完成后可就业渗透测试工程师、web安全工程师、安全运维工程师、漏洞挖掘工程师、安全驻场工程师等 特别提醒:本课程购买后可永久学习、可享受与讲师互动学习资格

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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