我有一个用Java编写并部署在JBoss上的Web应用程序。该应用程序由亚马逊云的EC2实例托管。当我以用户'Ubuntu'登录到我的服务器并启动JBoss服务器时,我的应用程序能够访问JNI库(它们也安装在同一台EC2机器上)就好了。
但是,我需要编写一个脚本,每晚都会自动重启jboss服务器,所以我编写了一个脚本并将其放在服务器的crontab上。当我以用户'Ubuntu'登录并将我的脚本添加到'crontab -e'时,它甚至都没有执行。但是,当我编辑以root身份登录的crontab时,这工作正常(我编辑了/ etc / crontab文件并指定用户'Ubuntu'应该启动脚本)。该脚本工作正常,服务器每晚都重启。但是,我的应用程序在尝试访问JNI库时不断收到“UnsatisfiedLinkErrors”。奇怪的是,当我手动启动以“Ubuntu”用户身份登录的服务器时,不会发生这种情况。我有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
您可能需要为基于cron的脚本使用LD_LIBRARY_PATH设置。
Java(JBoss)将在LD_LIBRARY_PATH中查找您的本机库。确保将lib添加到LD_LIBRARY_PATH。
或者,您可以通过java.library.path指定位置。
-Djava.library.path=${LD_LIBRARY_PATH}:${LOCATION_OF_YOUR_LIB}