wrapper.java.library.path.<n> プロパティ群

対応バージョン :2.2.9
対応エディション :プロフェッショナル版スタンダード版コミュニティー版
対応プラットフォーム :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/Linux

このプロパティには、アプリケーションで利用するネイティブライブラリー(JNI)を探す対象の ディレクトリーをリストとして指定しておきます。 指定ディレクトリーの中に、Wrapper ネイティブライブラリー (Windows:「wrapper.dll」、Linux/UNIX:「libwrapper.so」) を必ず置かなければなりません。

<n> コンポーネント部:

各エレメントは「プロパティ名」を持ち、その名前は [wrapper.java.library.path.]で始まり、 プロパティ名の「<n>」コンポーネント部には、 「1」からカウントアップしていくインテージャー(整数値)のナンバリング数値を入れて指定します。 デフォルトでは、連番であり欠番で飛ぶことはできないはずです。 [wrapper.ignore_sequence_gaps] プロパティで、シーケンス内でギャップ(途切れ)検索を「許可する/許可しない」を任意に設定にすることができます。

設定例:
wrapper.java.library.path.1=../lib

Wrapper によって生成された Java ライブラリーパスの終わりへ、システムパスを追加するようにリクエストすることで、 デフォルトの Java 動作を取得することも可能です。 操作に入る前に、 [wrapper.java.library.path.append_system_path] プロパティに関連するドキュメントを熟読してください。

注意

スペースを含むライブラリーパスエントリー:

Wrapper では、スペース(空白)を含むパスエレメントを正しく取り扱います。 最終の生成されたライブラリーパスを引用符で囲むことで Wrapper が自動的に処理します。 個別のライブラリーパスエレメントのプロパティ値は、スペース(空白)を含んでいても 引用符を含む定義をするべきではありません。

注意

一部のネイティブライブラリーは、動的にリンクされた他のライブラリーを参照します。 Java は、Java ライブラリーパスを使い、初期 JNI ライブラリーを配置しますが、 セカンダリーライブラリーは、そのプラットフォームのデフォルトメカニズムを使い、ロード(読み込み)されます。

Windows システムでは、まず現在の作業ディレクトリー (「wrapper.exe」の配置場所)を覗き、その後、 「Windows system32」ディレクトリーと Windows ディレクトリーを覗きます。 最後に、システムパス 「PATH」 全体を検索します。 もし両方の DLL ファイルが自分のアプリケーションの「lib」ディレクトリー に配置されていた場合、次のように、そのパスをシステムパスに追加する必要があるかもしれません。 その「set.PATH」は Windows 用の設定であり、 「set.LD_LIBRARY_PATH」は、 クロスプラットフォーム向けのコンフィギュレーションファイル用の設定であるため、UNIX システム上でも同様に動作します。 Mac OSX では、「set.DYLD_LIBRARY_PATH」変数も活用できます。

set.PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%PATH%
set.LD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%LD_LIBRARY_PATH%
set.DYLD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%DYLD_LIBRARY_PATH%

現在の作業ディレクトリーの中でなく、 「PATH」上に、セカンダリーライブラリーを配置すると、 他のアプリケーションによってインストールされた古いバージョンのライブラリーが、 「Windows system32」ディレクトリーで 競合するかもしれないリスクがありますので、ご注意ください。 これは、システムがファイルを検索する順番によるものです。

この問題は、システム上に SAP アプリケーションもまたインストールされている場合に、 SAP の JCO ライブラリーの動作にも見られることです。

プラットフォーム仕様によるネイティブライブラリー

Wrapper では、たとえアプリケーションがネイティブライブラリーを利用していたとしても、 どんなプラットフォーム上でも動作するバイナリ配布を、簡単に作成できるように、ファシリティを提供しています。

Wrapper のネイティブライブラリーのケースで見ると、 Wrapper は、ネイティブコンポーネントの配置の仕方に関しても、賢くできており、 ライブラリーには、現在の OS 名、プラットフォーム名や、ビット深さを含むような名前がつけられています。 例えば: 「wrapper-windows-x86-32.dll」や 「libwrapper-linux-x86-32.so」です。

しかしながら、一般的にほとんどのライブラリーは、このような機能をサポートしておらず、 ネイティブライブラリーに、全てのプラットフォームで同じ名前が付けられていることも多いようです。 その場合、通常は、アプリケーションのプラットフォーム仕様向けごとに個別に配布する必要性があります。 ところが、下記のようにライブラリーパスを定義することにより、 Wrapper は動的にランタイムで正しいプラットフォーム仕様ディレクトリーを参照し、 単一の Wrapper 配布だけで、全てのプラットフォームをサポートすることが可能なのです。

設定例:
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=../lib/native/%WRAPPER_OS%-%WRAPPER_ARCH%-%WRAPPER_BITS%

次のように解決します:

Windows:
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=../lib/native/windows-x86-32
Linux:
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=../lib/native/linux-x86-32
Solaris:
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=../lib/native/solaris-sparc-32

注意

上記の用に、もしネイティブライブラリーが自分の外部ライブラリーをロード(読込み)する必要がある場合、 正しくパスを設定する必要があります。 もし、そのファイルはシステムの外部にインストールされている場合、上記メソッドは有効です。 しかし、自分のアプリケーションと一緒に配布したい場合、各プラットフォームのディレクトリーに 他のネイティブライブリーと同じディレクトリーに配置してください。 環境変数は下記の通りに設定できます。

set.PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_FILE_SEPARATOR%native%WRAPPER_FILE_SEPARATOR%%WRAPPER_OS%-%WRAPPER_ARCH%-%WRAPPER_BITS%%WRAPPER_PATH_SEPARATOR%%PATH%
set.LD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_FILE_SEPARATOR%native%WRAPPER_FILE_SEPARATOR%%WRAPPER_OS%-%WRAPPER_ARCH%-%WRAPPER_BITS%%WRAPPER_PATH_SEPARATOR%%LD_LIBRARY_PATH%
set.DYLD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_FILE_SEPARATOR%native%WRAPPER_FILE_SEPARATOR%%WRAPPER_OS%-%WRAPPER_ARCH%-%WRAPPER_BITS%%WRAPPER_PATH_SEPARATOR%%DYLD_LIBRARY_PATH%

これは非常に荒ぶるように見えますが、どのプラットフォームでも作動できるようにするために必要であり、 次のように解決します:

Windows:
set.PATH=..\lib\native\windows-x86-64;C:\Others
set.LD_LIBRARY_PATH=..\lib\native\windows-x86-64;C:\Others
set.DYLD_LIBRARY_PATH=..\lib\native\windows-x86-64;C:\Others
Linux:
set.PATH=../lib/native/linux-x86-64:/lib/others
set.LD_LIBRARY_PATH=../lib/native/linux-x86-64:/lib/others
set.DYLD_LIBRARY_PATH=../lib/native/linux-x86-64:/lib/others

参照: ライブラリー