FIELD NOTES: 書を持って街へ出よう

合同会社フィールドワークス プログラマ兼代表のブログ

jarファイルとjniライブラリのインストール方法

オフィスシーン(コーヒーブレイク) - 写真素材
(c) YsPhoto写真素材 PIXTA

Javaの外部ライブラリ(*.jar)をJavaの処理系が参照できるようにするためには,環境変数CLASSPATHに追加したり,コマンド実行時に -classpath オプションを追加するなどの方法がありますが,jarファイルの数が多くなってくるといちいち指定するのは面倒です。

Java 2 (JDK 1.2)からの機能拡張により,システム標準のjarファイル置き場が設けられているので,OS別に情報をまとめました。
同時に,jniライブラリ(*.so, *.dll, *.jnilib)の置き場所についても記しています。

なお以降の説明では,Javaの開発環境(JDK)のインストールディレクトリを環境変数JAVA_HOMEに,実行環境(JRE)のインストールディレクトリを環境変数JRE_HOMEに設定してあるものとします。

Linux

jarファイルの置き場所は,以下のとおりです。

$JAVA_HOME/jre/lib/ext
$JRE_HOME/lib/ext

jniライブラリ(*.so)の置き場所は,以下のとおりです。

$JAVA_HOME/jre/lib/<アーキテクチャ>
$JRE_HOME/lib/<アーキテクチャ>

<アーキテクチャ>の部分は,32ビット環境では“i386”に,64ビット環境では“amd64”になるようです(JDK 1.6で確認)。

複数のJDKJREをインストールしている場合は,それぞれのインストール先にjarファイルをコピーする必要があります。

Windows

jarファイルの置き場所は,以下のとおりです。

%JAVA_HOME%\jre\lib\ext
%JRE_HOME%\lib\ext

Windowsの場合,jniライブラリ(*.dll)の置き場所として特別な場所が用意されているわけではなく,PATHが通っていればどこでも良いようです。

2011-08-29 訂正

8/25の版では,Windows用jniライブラリ(*.dll)の置き場所を「%JAVA_HOME%\jre\lib\<アーキテクチャ>」または「 %JRE_HOME%\lib\<アーキテクチャ>」と書きましたが,JDK 1.6.0で確認したところ誤りでした。32ビット版JDKをインストールするとi386というフォルダができますが,ここにDLLをコピーしてもjava起動時に検索できずエラーとなります。

PATHの設定が空の状態で以下のプログラムを実行して,実際の検索パスを調べたところ,

public class LibraryTest {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.library.path"));
    }
}

次のようになりました。

C:\Program Files\Java\jdk1.6.0_24\bin;.;C:\WINDOWS\Sun\Java\bin;
C:\WINDOWS\system32;C:\WINDOWS

「上記の検索パス」+「PATHの設定」が,java実行時のjniライブラリの検索パスとなると思われます。

実用上は「%JAVA_HOME%\bin」に置くのが良さそうです。

Mac OS X

Appleが独自の改造を行っているため,LinuxともWindowsとも異なります。

jarファイルもjniライブラリ(*.jnilib)も同じ場所に置きます。

/Library/Java/Extensions/
~/Library/Java/Extensions/