从库中加载本机库

时间:2016-06-30 22:02:19

标签: java c tomcat java-native-interface shared-libraries

我在Ubuntu的Tomcat7上托管Java Web应用程序。

我有一个主要的共享.so库,它依赖于本机库。主库已加载,但在尝试加载它的本机库时出现错误。基本上,主库是本机库周围的JNI包装器。

lib_mynative_lib.so: cannot open shared object file: No such file or directory.

主库和本机库都位于同一位置。这可能是什么问题?是不是可以从库中加载库?我必须为Tomcat声明一些其他隐藏的PATH定义吗?第一个图书馆被拿起,但没有第二个。

编辑:

考虑到这一点,Tomcat需要知道主库的位置是合乎逻辑的,因此我在/usr/share/tomcat7/bin/setenv.sh中将其指定为

export CATALINA_OPTS="-Djava.library.path=/home/me/my_shared_lib"

这适用于主库。

现在,对于本机库,我将以下内容添加到同一个setenv.sh

export JAVA_OPTS=$JAVA_OPTS "-Djava.library.path=/home/me/my_shared_lib"

但没有变化。

更多信息: 第一个(主)库使用System.loadLibrary("lib_mymainlib.so")从Java加载,而第二个库使用dlopen("lib_mynative_lib.so", 1)加载到C ++代码中。

0 个答案:

没有答案