3

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;
    }
}

2番目のキャッチブロックに巻き上げます。私が行ったすべての読書は、最初の 2 つのエクスポートのいずれかがトリックを実行する必要があることを示唆しています。Windowsでは、パス上のフォルダーに「awragrids.dll」を配置すると、正常に動作します。

私はこれにあまりにも多くの時間を費やしたので、本当に少し眠る必要があります...助けてください!

4

2 に答える 2

0

これは私の側の間違いだったのではないかと思います。ライブラリを最初にコンパイルしたとき、別の名前 (「libawargrids.so」) だったので、次のように名前を変更しました。

mv libawragrids.so libawratools.so

同等のものは Windows で動作するように見えますが、Linux では動作しない可能性があります。「awratools」という名前を使用して再度コンパイルすると(「libawratools.so」が生成されます)、問題はなくなりました。

問題は現在修正されていますが、名前の変更がおそらく原因であると誰かが確認できれば (そしておそらくその理由を説明してくれれば)、それはありがたいことです。

人々の時間を無駄にして申し訳ありませんが、助けてくれてありがとう!

PS私は今行を配置しました:

export JAVA_OPTS="-Djava.library.path=/var/lib/tomcat7/shared"
export LD_LIBRARY_PATH=/var/lib/tomcat7/shared

/etc/init.d/tomcat6 の先頭にあるため、どのユーザーがサービスを開始しても問題ありません。これが何らかの理由で悪い場合はお知らせください。

于 2012-05-29T00:21:21.363 に答える
0

Tomcat のスタートアップ スクリプト -- in -- が実際に from 環境を使用していることを確認しcatalina.sh/var/lib/tomcat6/binくださいJAVA_OPTS。私が今見ているシステム上のスクリプトでは、誰かが環境設定を取り込まずに完全な定義を入れました。

于 2012-05-27T11:10:03.003 に答える