加载共享库时出错:libjvm.so:

时间:2015-05-21 14:05:16

标签: java-native-interface

我正在努力使JNI example成功。 我能够编译所有文件,但由于此错误,我无法启动可执行文件:

  

./ TEST:加载共享库时出错:libjvm.so:无法打开共享对象文件:没有这样的文件或目录

我检查了所有路径,编译没有错误...
现在我认为这与我的操作系统(OpenSuse)或我的java版本有关: 我正在运行java 1.7,代码使用JVM 1.6(vm_args.version = JNI_VERSION_1_6;)..而JNI_VERSION_1_7似乎不存在。

1 个答案:

答案 0 :(得分:3)

我找到了一个很好的例子,我猜想网上最好的例子之一,因为作者写下了他使用的每个文件的路径:Tutorial

我仍然遇到了库问题,所以这里是我如何设法让所有工作:

  1. 在同一个目录中创建java和cc文件(参见上面的链接)。
  2. 使用Java类的路径编辑main.cc中的以下行:
  3. System.TimeZoneInfo

    1. 转到剧目并编译java类:
    2. { const_cast<char*>("-Djava.class.path=PATH_TO_JAVA_CLASS"), NULL }

      1. 在计算机上查找文件$ javac Main.java。一旦你有了 找到它,编辑lib路径如下:
      2. libjvm.so

        (对我来说,它在$ LIBPATH=PATH_TO_LIBJVM.SO

        1. 导出lib路径
        2. /usr/lib/jvm/java-1.7.0-openjdk-1.7.0/jre/lib/amd64/server

          1. 现在你只需要编译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的符号链接

            ℃。编译如下:

          2. jni.h

            1. 应该是好的:)
            2. $ g++ -Wall main.cc -I/PATH_TO_jni.h -L${LIBPATH} -ljvm

                

              你好,世界!

                   

              你好,Java!