[mecab][java] MeCabをLeopard (Mac) にインストールしJavaバインディングつかってみる

移転しました。

参考URLそのまま

Mecabインストール

$ sudo port install mecab +utf8 mecab-ipadic-utf8
$ port info mecab
mecab 0.96, textproc/mecab (Variants: universal, darwin_7, darwin_8, sjis, utf8, utf8only)
http://mecab.sourceforge.net/

MeCab.jar作成

ちとはまった。
ここから、0.96をダウンロード。0.97だと失敗するので注意

tar zxvf mecab-java-0.96.tar.gz
cd mecab-java-0.96
vi Makefile
-----
JAVA_BASE=/System/Library/Frameworks/JavaVM.framework/Versions/1.5
JAVA_HOME=$(JAVA_BASE)/Home

TARGET=MeCab
JAVAC=$(JAVA_HOME)/bin/javac -encoding eucjp
JAVA=$(JAVA_HOME)/bin/java
JAR=$(JAVA_HOME)/bin/jar
CXX=g++
INCLUDE=$(JAVA_BASE)/Headers

PACKAGE=org/chasen/mecab

LIBS=`mecab-config --libs`
#INC=`mecab-config --cflags` -I$(INCLUDE) -I$(INCLUDE)/linux
INC=`mecab-config --cflags` -I$(INCLUDE)

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 *.class $(PACKAGE)/*.class
    
cleanall:
    rm -fr $(TARGET).java *.cxx
-----
make
make test

これでMeCab.jarができる。

Mavenへインスコ

$ jar cvf MeCab-sources.jar org/chasen/mecab/*.java
$ mvn install:install-file -Dfile=MeCab.jar -DgroupId=org.chasen.mecab -DartifactId=mecab -Dversion=0.96 -Dpackaging=jar
$ mvn install:install-file -Dfile=MeCab-sources.jar -DgroupId=org.chasen.mecab -DartifactId=mecab -Dversion=0.96 -Dpackaging=jar -Dclassifier=sources

プロジェクトに適用

pom.xmlに以下を追加

<dependency>
	<groupId>org.chasen.mecab</groupId>
	<artifactId>mecab</artifactId>
	<version>0.96</version>
</dependency>

Eclipseで実行する場合

後は Eclipse の実行時に環境変数を与えるべく、実行クラスのプロパティの Run/Debug Settings の Environment に DYLD_LIBRARY_PATH を設定することと、JRE System Library をビルド時の環境と同様の Java5 に設定すれば、するりと動きました。

DYLD_LIBRARY_PATHには
/Users/shohu/src/mecab-java-0.96
のように、バインディングをインストールしたディレクトリを指定する。