关于java jni调用c++动态库的一些问题及解决方法
来源:互联网 发布:js如何获取单选框的值 编辑:程序博客网 时间:2024/05/21 06:58
最近使用java jni接口技术调用c++完成的动态库,平台为虚拟机下的centos 6.6。
编译出来的*.so 文件在被java调用过程中出现了各种错误。
1.
java com.cmsz.znw.filevalmain.FileValServerImpl
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/xxx/Desktop/test/libZnwFileVal.so: com_cmsz_znw_filevalmain_FileValServerImpl.o: cannot open shared object file: No such file or directory
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)
at com.cmsz.znw.filevalmain.FileValServerImpl.<clinit>(FileValServerImpl.java:12)
2.
OpenJDK 64-Bit Server VM warning: You have loaded library /home/xxx/Desktop/test/libZnwFileVal.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'.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/xxx/Desktop/test/libZnwFileVal.so: /home/xxx/Desktop/test/libZnwFileVal.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)
at com.cmsz.znw.filevalmain.FileValServerImpl.<clinit>(FileValServerImpl.java:12)
3.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f5c8baed5c6, pid=11530, tid=0x00007f5c8b47c700
#
# JRE version: OpenJDK Runtime Environment (8.0_111-b15) (build 1.8.0_111-b15)
# Java VM: OpenJDK 64-Bit Server VM (25.111-b15 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x6705c6]
#
# Core dump written. Default location: /home/ylwei/Desktop/test/core or core.11530
#
# An error report file with more information is saved as:
# /home/xxx/Desktop/test/hs_err_pid11530.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
Aborted (core dumped)
从网上搜了各种办法,没有能解决问题。怀疑有可能是动态库编译时候选项有问题。也有可能java文件有问题。
///
20170120更新
原来是编译过程中依赖的静态库需要重新编译一下才能正常使用。拷贝过来的静态库是在其他虚拟机上编译的,而我的gcc版本为6.1.0,他的gcc版本为4.8.5。
将所有用到的静态库重新编译了一遍,确实可用。
- 关于java jni调用c++动态库的一些问题及解决方法
- java 线程遇到的问题及解决方法 JNI调用
- java用jni调用dll动态库出现Can't find dependent libraries问题的解决方法
- Java调用C/C++编写的动态连接库-JNI
- java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)
- Go语言调用c动态库遇到的一些问题
- JAVA使用JNI调用C/C++动态库
- linux下 java JNI调用C语言动态链接库
- linux下 java JNI调用C语言动态链接库
- linux下 java JNI调用C语言动态链接库
- java 调用C/C++ JNI 动态链接库
- JAVA使用JNI调用C/C++动态库
- java(JNI)调用c/c++动态链接库 linux
- java借助于JNI调用c/c++动态链接库
- 关于java用jni调用 dll动态库Can't find dependent libraries错误的解决
- 关于java用jni调用 dll动态库Can't find dependent libraries错误的解决
- 关于java用jni调用 dll动态库Can't find dependent libraries错误的解决
- 关于java用jni调用 dll动态库Can't find dependent libraries错误的解决
- wamp配置https apache配置https apache2.4.9
- 本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效
- 使用spring的好处
- 下拉刷新的ScrollView 不影响item点击事件
- eclipse配置python
- 关于java jni调用c++动态库的一些问题及解决方法
- 15.7 Swift全局引用
- 正则表达式matcher.group用法
- MFC STATIC,Picture控件使用及无法添加变量的问题
- js操作 cookie
- 单例模式
- 完全卸载干净MySQL
- linux系统下(x86_64)安装jdk 1.6(jdk-6u45-linux-x64.bin)
- Spring4MVC+Spring4+Hibernate4整合系列--(二)StepByStep2