4

JavaEE6用のGlassfish3.1.1Webアプリケーションを実行しています。私のクラスの1つにネイティブライブラリの依存関係があります。このネイティブメソッドを使用するためにJNIを使​​用しています。そのプロセスの一部には、共有ライブラリの.soファイルの作成が含まれます。私のJavaクラスの1つには、System.Loadlibrary( "library");があります。そのlibrary.soファイルを参照する呼び出し。

私の質問は、GlassfishでこのJNI機能にアクセスして使用するために、この共有ライブラリとそれが参照するネイティブコードをどこに配置すればよいかということです。

Glassfishがホストされているマシンのどこにでも移動できるいくつかのC++プログラムを呼び出す必要があります。それらをdomain1/extフォルダーに配置する必要がありますか?それらをネイティブライブラリとしてビルドパスのjarに追加します。これはどのように行われますか?

4

2 に答える 2

8

次のGlassfishコマンドを使用して、ネイティブライブラリが配置されているパスを設定します。

asadmin set server.java-config.native-library-path-prefix=$NATIVE_LIBRARY_PATH

管理コンソールからネイティブライブラリの場所を設定することもできます。ライブラリの移動/名前変更に柔軟性が必要な場合は、シンボリックリンクを使用できます。

Eclipseビルドパスを介してネイティブライブラリを追加することの利点は何ですか?

JVMは、ネイティブライブラリパスを知っている必要があります。EclipseからJVMを起動する場合(たとえば、ネイティブライブラリを使用した単体テスト)、Eclipseでパスを構成する必要があります。ただし、Glassfishから(Eclipse Glassfish Adapterを使用して)JVMを起動する場合は、Glassfish自体を構成する必要があります。

于 2012-01-20T20:29:40.070 に答える
-2

WindowsベースのサーバーでJNIラップDLLを使用する場合、DLLを

    C:/Windows/System32

.soをLinuxマシンに配置してみてください。

   /usr/lib64/

試してみてください。

于 2012-01-20T20:21:48.517 に答える