【发布时间】:2012-05-27 10:53:54
【问题描述】:
如何在 Ubuntu 上的 Tomcat6 中加载共享库?
我创建了一个名为“libawragrids.so”的库“awragrids”并将其放入
/var/lib/tomcat6/shared
我在调用start tomcat的终端中设置了以下环境变量:
export PATH=$PATH:/var/lib/tomcat6/shared
export JAVA_OPTS="-Djava.library.path=/var/lib/tomcat6/shared"
export LD_LIBRARY_PATH=/var/lib/tomcat6/shared
然后我尝试加载库
private static final String GRIDTOOL_LIBRARY_NAME = "awratools";
static {
try {
System.loadLibrary(GRIDTOOL_LIBRARY_NAME);
} catch (java.lang.SecurityException e) {
System.out.println("Not allowed to load dynamic library " + GRIDTOOL_LIBRARY_NAME + ".");
throw e;
} catch (java.lang.UnsatisfiedLinkError e) {
System.out.println("Failed to load dynamic library " + GRIDTOOL_LIBRARY_NAME + ".");
throw e;
}
}
并在第二个 catch 块中结束。我所做的所有阅读都表明前两个导出中的任何一个都可以解决问题。在 Windows 上,我将“awragrids.dll”放在路径上的文件夹中,它工作正常。
我在这件事上花费了方式太多时间,真的需要好好睡一觉……请帮忙!
【问题讨论】:
-
共享库是否依赖于其他 Linux 下它在 Windows 下不需要的库?
-
您是否通过 bash/init 脚本运行 tomcat?不能以同一用户身份运行
-
guido - 我更改为 root 来运行脚本(我使用 sudo,但认为环境变量可能不可用......我认为这是你的建议?)
-
David - 我链接到相同的库...我不确定。我对库运行 ldd 并找到了一个我在系统上找不到的库 (linux-vdso.so.1) (find / -name "linux-vdso.so.1")……也许这就是问题所在。
-
...好吧,现在我明白为什么我找不到那个了。
标签: java tomcat shared-libraries