2 min read

java(Eclipse)でMeCabを使おう

javaでMeCabを使うため、開発環境としてEclipseを使おうと思っているのでそれを構築していきます

環境

MeCabのJavaバインディング:mecab-java-0.996.tar.gz
Eclipse:4.4Luna
java(JDK):1.8.0_20

jarファイルの作成

ここからMeCabのJavaバインディングをダウンロードし、解凍してください

「mecab-java-0.996」フォルダができるのでcdで移動
そして、ここからが本題なのですが、私が構築する時にいろいろなサイトを見ました。
しかしどこを見てもMakeFileの中に

JAVA_BASE=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

こういう記述があるのです
私も最初はふつうにこれあるんだろうなぁとか思ってましたけどありませんでした。
そしてそれの打開策?が見つかったので一応記事にしておこうと思った次第です。

MakeFileをなんでもいいのでテキストエディタで開きます
そして以下を上書きコピペしてください

JAVA_BASE=/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents
JAVA_HOME=$(JAVA_BASE)/Home
TARGET=MeCab
JAVAC=javac -J-Dfile.encoding=UTF-8
JAVA=java -Dfile.encoding=UTF-8
JAR=jar -J-Dfile.encoding=UTF-8
CXX=g++
INCLUDE=$(JAVA_BASE)/Home/include
PACKAGE=org/chasen/mecab
LIBS=-arch x86_64 `mecab-config --libs`
INC=-arch x86_64 `mecab-config --cflags` -I$(INCLUDE) -I$(INCLUDE)/darwin
all:
$(CXX) -O3 -c -fpic $(TARGET)_wrap.cxx $(INC)
$(CXX) -dynamiclib $(TARGET)_wrap.o -o lib$(TARGET).dylib $(LIBS)
$(JAVAC) $(PACKAGE)/*.java
$(JAVAC) test.java
$(JAR) cfv $(TARGET).jar $(PACKAGE)/*.class
test:
env DYLD_LIBRARY_PATH=. $(JAVA) test
clean:
rm -fr *.jar *.o *.dylib *.so *.class $(PACKAGE)/*.class
cleanall:
rm -fr $(TARGET).java *.cxx

上書きコピペしたら

make

私の場合はこれでjarファイルがきちんと生成され、そのjarもエラーを吐くことなく使うことができました。

そしたらこのフォルダを「mecab-java」にリネームしてください
そしてmecab-javaフォルダごと/usr/local/bin/に移動させてしまいましょう。

Eclipseの設定

まずMeCabを使用するプロジェクトを作り、それのプロパティを開いて「Javaのビルド・パス」項目の「ライブラリー」タブを開き、「外部Jar追加」ボタンで先ほど移動させた/usr/local/bin/mecab-javaの中にある「MeCab.jar」を選択し、開く→OK
これでプロジェクトからの参照はできました。

その次にデバッグ用の設定です

ツールバーの実行→実行構成→環境タブ→新規
これで出てきたダイアログに以下を入力してください

名前:DYLD_LIBRARY_PATH
値:/usr/local/bin/mecab-java

OK→閉じる or 実行

MeCabの完全な構築を望むならあと一息

Eclipseでプロジェクトが完成し、それをjarファイルでエクスポートした場合、ターミナル等でjava -jar hogehoge.jarなどとやっても環境変数が設定されてないのでそれを設定してあげましょう
具体的なコードは以下

#java encoding
JAVAC='javac -encoding UTF-8 -J-Dfile.encoding=UTF-8'
alias javac=$JAVAC
#'javac -encoding UTF-8 -J-Dfile.encoding=UTF-8'
JAVA='java -Dfile.encoding=UTF-8'
alias java=$JAVA
#PATHをあえて指定することで、homebrewのパスの優先度を高める。
PATH=/usr/local/bin:$PATH
export PATH
#java-mecab用のクラスパス
export CLASSPATH=/usr/local/bin/mecab-java:$CLASSPATH
export LD_LIBRARY_PATH=/usr/local/bin/mecab-java:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/usr/local/bin/mecab-java:$DYLD_LIBRARY_PATH
alias mecajavac='env DYLD_LIBRARY_PATH=".:/usr/local/bin/mecab-java" CLASSPATH=".:$CLASSPATH:/usr/local/bin/mecab-java/MeCab.jar" $JAVAC'
alias mecajava='env DYLD_LIBRARY_PATH=".:/usr/local/bin/mecab-java" CLASSPATH=".:$CLASSPATH:/usr/local/bin/mecab-java/MeCab.jar" $JAVA'

他サイト様からの丸々コピペで申し訳ないです・・・

私はこのコードを/.bashrcと/.bash_profileのどちらにも記述しました
それでいけるっぽい??

以上javaバインディングMeCabの構築方法でした。