我正在努力使JNI example成功。 我能够编译所有文件,但由于此错误,我无法启动可执行文件:
./ TEST:加载共享库时出错:libjvm.so:无法打开共享对象文件:没有这样的文件或目录
我检查了所有路径,编译没有错误...
现在我认为这与我的操作系统(OpenSuse)或我的java版本有关:
我正在运行java 1.7,代码使用JVM 1.6(vm_args.version = JNI_VERSION_1_6;
)..而JNI_VERSION_1_7似乎不存在。
答案 0 :(得分:3)
我找到了一个很好的例子,我猜想网上最好的例子之一,因为作者写下了他使用的每个文件的路径:Tutorial
我仍然遇到了库问题,所以这里是我如何设法让所有工作:
System.TimeZoneInfo
{ const_cast<char*>("-Djava.class.path=PATH_TO_JAVA_CLASS"), NULL }
。
$ javac Main.java
。一旦你有了
找到它,编辑lib路径如下: libjvm.so
(对我来说,它在$ LIBPATH=PATH_TO_LIBJVM.SO
)
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0/jre/lib/amd64/server
现在你只需要编译main.cc文件。我遇到了问题,因为找不到$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LIBPATH}
:
一个。查找jni.h
(对我来说jni.h
)
湾如果您对/usr/lib/jvm/java-1.7.0-openjdk-1.7.0/include/
有疑问,请在jni_md.h
的同一文件夹中创建jni_md.h
的符号链接
℃。编译如下:
jni.h
$ g++ -Wall main.cc -I/PATH_TO_jni.h -L${LIBPATH} -ljvm
你好,世界!
你好,Java!