2016-10-13 19 views
0

Javaで記述されたWebアプリケーションがJBossにデプロイされています。このアプリケーションはAmazonのクラウドのEC2インスタンスでホストされています。自分のサーバーにユーザーUbuntuとしてログインしてJBossサーバーを起動すると、私のアプリケーションは(同じEC2マシンにインストールされている)JNIライブラリにアクセスできます。アプリケーションがcronから起動したときにエラーが発生しました

しかし、私は毎晩jbossサーバーを自動的に再起動するスクリプトを書く必要がありましたので、スクリプトを書いてサーバーのcrontabに入れました。ユーザー 'Ubuntu'としてログインしてスクリプトを 'crontab -e'に追加すると、実行さえしませんでした。しかし、rootとしてログインしているcrontabを編集すると、それがうまくいきました(/ etc/crontabファイルを編集し、ユーザの 'Ubuntu'がスクリプトを起動するように指定しました)。スクリプトは正常に動作し、毎晩サーバーが正常に再起動します。しかし、私のアプリケーションは、JNIライブラリにアクセスしようとすると「UnsatisfiedLinkErrors」を取得し続けます。不思議にも、私が 'Ubuntu'ユーザとしてログインしたサーバを手動で起動すると、これは起こりません。どのように私はこの問題を解決することができます任意のアイデア?

答えて

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} 
関連する問題