加载共享库时出错:libjvm.so:
error while loading shared libraries: libjvm.so:
我正在努力使这个 JNI example 有效。
我能够编译所有文件,但由于这个错误我无法启动可执行文件:
./TEST: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
我检查了所有的路径,编译没有错误...
现在我认为这与我的操作系统 (OpenSuse) 或我的 java 版本有关:
我是 运行 java 1.7,代码使用 JVM 1.6 (vm_args.version = JNI_VERSION_1_6;
).. JNI_VERSION_1_7 似乎不存在。
我找到了一个很好的例子,我猜是网上最好的例子之一,因为作者写下了他使用的每个文件的路径:Tutorial
我仍然遇到库问题,所以这就是我设法使所有工作正常进行的方法:
- 在同一个目录中创建 java 和 cc 文件(参见上面的 link)。
- 使用 Java class 的路径编辑 main.cc 中的以下行:
{ const_cast<char*>("-Djava.class.path=PATH_TO_JAVA_CLASS"), NULL }
- 转到曲目并编译 java class :
$ javac Main.java
.
- 在您的计算机上查找文件
libjvm.so
。一旦你有
找到了,编辑lib路径如下:
$ LIBPATH=PATH_TO_LIBJVM.SO
(对我来说是 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0/jre/lib/amd64/server
)
- 导出lib路径
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LIBPATH}
现在你只需要编译main.cc文件。我有一个问题,因为 jni.h
没有找到:
一个。找到jni.h
(对我来说/usr/lib/jvm/java-1.7.0-openjdk-1.7.0/include/
)
b。如果 jni_md.h
有问题,请在 jni.h
的同一文件夹中创建 jni_md.h
的符号 link
c。编译如下:
$ g++ -Wall main.cc -I/PATH_TO_jni.h -L${LIBPATH} -ljvm
- 应该不错:)
./a.out
Hello, world!
Hello, Java!
我正在努力使这个 JNI example 有效。 我能够编译所有文件,但由于这个错误我无法启动可执行文件:
./TEST: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
我检查了所有的路径,编译没有错误...
现在我认为这与我的操作系统 (OpenSuse) 或我的 java 版本有关:
我是 运行 java 1.7,代码使用 JVM 1.6 (vm_args.version = JNI_VERSION_1_6;
).. JNI_VERSION_1_7 似乎不存在。
我找到了一个很好的例子,我猜是网上最好的例子之一,因为作者写下了他使用的每个文件的路径:Tutorial
我仍然遇到库问题,所以这就是我设法使所有工作正常进行的方法:
- 在同一个目录中创建 java 和 cc 文件(参见上面的 link)。
- 使用 Java class 的路径编辑 main.cc 中的以下行:
{ const_cast<char*>("-Djava.class.path=PATH_TO_JAVA_CLASS"), NULL }
- 转到曲目并编译 java class :
$ javac Main.java
.
- 在您的计算机上查找文件
libjvm.so
。一旦你有 找到了,编辑lib路径如下:
$ LIBPATH=PATH_TO_LIBJVM.SO
(对我来说是 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0/jre/lib/amd64/server
)
- 导出lib路径
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LIBPATH}
现在你只需要编译main.cc文件。我有一个问题,因为
jni.h
没有找到:一个。找到
jni.h
(对我来说/usr/lib/jvm/java-1.7.0-openjdk-1.7.0/include/
)b。如果
的同一文件夹中创建jni_md.h
有问题,请在jni.h
jni_md.h
的符号 linkc。编译如下:
$ g++ -Wall main.cc -I/PATH_TO_jni.h -L${LIBPATH} -ljvm
- 应该不错:)
./a.out
Hello, world!
Hello, Java!