MacでJMagickを利用するJavaアプリケーションのローカル開発環境づくりで手間取ったのでメモしておく。
実施環境
- Mac OS X El Capitan
- Homebrew
- Oracle Java 8
インストール手順
ImageMagickをインストールする
1. HomebrewでImageMagickをインストールする
※以下で表示される情報は実施時点のものです。
$ brew info imagemagick
imagemagick: stable 6.9.3-0 (bottled), HEAD
$ brew install imagemagick
JMagickをインストールする
1. ソースコードダウンロードする
http://www.jmagick.org/ からソースコードをダウンロードします。
実施時点では jmagick-6.4.0-src.tar.gz が最新でした。
2. ダウンロードしたソースコードを展開する
tar xzf jmagick-6.4.0-src.tar.gz
3. Make.rulesを書き換える
本来タブであるはずのインデントはスペースになっているせいで、ビルドが失敗します。
ソースは以下のstack overflowです。
http://stackoverflow.com/questions/14819033/jmagick-make-error
stack overflowのコメントどおり、175、176行目行頭のスペース4つをタブ1つに置き換えます。
以下が該当箇所(抜粋)です。
173:ifdef DARWIN
174: # Mac OS X
175: @-echo "Using install_name_tool..."
176: @-/usr/bin/install_name_tool -id $(PROJ_BASE_DIR)lib/lib$(JNI_LIB_NAME)$(SHARED_LIB_EXT) $(PROJ_BASE_DIR)/lib/lib$(JNI_LIB_NAME)-$(MAJOR).$(MINOR).$(MICRO)$(SHARED_LIB_EXT)
177:endif
4. ./configure
を実行する
JavaHomeとImageMagickのパスを指定して./configure
を実行します。
./configure –with-java-home=/System/Library/Frameworks/JavaVM.framework/Versions/Current --with-magick-home=/usr/local/opt/imagemagick
5. ビルドする
make all
6. (必要な人のみ)インストールする
make install
実行すると、以下のファイルがインストールされます。
make uninstall
は存在しないので、アンインストールしたい場合は手動で削除してください。
- /usr/local/lib/jmagick-6.4.0.jar
- /usr/local/lib/libJMagick-6.4.0.so
- /usr/local/lib/libJMagick.so(シンボリックリンク)
JMagickをJVMに認識させる
システムプロパティ「java.library.path」で指定されている場所に、libJMagick.soのパスを通します。
この時、拡張子をjnilibにしないと認識してくれませんでした。。。
java.library.pathの確認は以下のJavaコードを実行して確認できます。
System.out.println(System.getProperty("java.library.path"));
なお、通常はjava.library.pathに以下が指定されている模様です。
- /Users/(ユーザ名)/Library/Java/Extensions
- /Library/Java/Extensions
- /Network/Library/Java/Extensions
- /System/Library/Java/Extensions
- /usr/lib/java
- カレントディレクトリ
ユーザ権限で設定する場合は、以下が良いかと思います。
# make installしていない場合
ln -s (展開ディレクトリ)/lib/libJMagick.so /Users/(ユーザ名)/Library/Java/Extensions/libJMagick.jnilib
# make installした場合
ln -s /usr/local/lib/libJMagick.so /Users/(ユーザ名)/Library/Java/Extensions/libJMagick.jnilib