【发布时间】:2013-08-13 21:35:21
【问题描述】:
我有一个在装有 Java 6 的 Linux 机器上编译的 JNI 应用程序。当我尝试在安装了 Java 7 的机器上运行它时,我收到以下错误:
./test: 加载共享库时出错: libjvm.so: 无法打开 共享对象文件:没有这样的文件或目录
问题是libjvm.so位于第二台机器上的/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server,而这个目录不在RPATH:
$ objdump -x test | grep RPATH
RPATH /usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/ja
va-6-openjdk/jre/lib/amd64/server
一个明显的解决方案是将/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server 添加到RPATH,但我想知道是否有更通用的方法来解决这个问题并使应用程序与系统上安装的任何JVM 一起工作?
【问题讨论】:
标签: java linux jvm java-native-interface shared-libraries