質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

1回答

3753閲覧

java にmecabを入れて使いたい!

15sc076

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2017/12/03 07:35

編集2017/12/03 08:04

Javaにmecabを入れて使いたいです。
mecabをインストールまではできました。
そのあとのMakefileの6行目を書き換える必要がある、と言われてどう書き換えればいいのか分からなくなりました。
これを書き換えたら「libMeCab.so」「MeCab.jar」が生成できるそうです。
環境はubuntu です。

TARGET=MeCab
JAVAC=javac
JAVA=java
JAR=jar
CXX=c++
INCLUDE=/usr/lib/jvm/java-6-openjdk/include

PACKAGE=org/chasen/mecab
.....
---以下略---

includeのところを書き換えるらしいのですが何に書き換えればいいのでしょうか?

追記、
JVMについて調べてみました。
端末で java -version と打つと

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5)(7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit server VM(build 24.79-b02,mixed mode)

と出てきました。
これでわかりますかね

http://javazuki.com/articles/mecab-install.html
これを見ながらインストールしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2017/12/03 07:44

OS(ディストリビューション)と使っているJVMの情報が書いてないですね
15sc076

2017/12/03 07:45

OSってubuntu じゃないですか?あとJVMって何でしょうか?
quickquip

2017/12/03 08:09

Ubuntu14.04 に aptで OpenJDK をインストールしたっぽいですね。Ubuntuだとパッケージでmecabが提供されていますから、mecabのインストールをどうやったかも書かれてないですね。
15sc076

2017/12/03 08:12

mecabのインストールは実はとても手間取ってしまい色んなサイトを見て色々入力しまくっていたらいつのまにかインストール出来ていたのでどうやって入れれたのかわからないです、、
guest

回答1

0

ベストアンサー

質問者さんの環境がよくわからない点がありますが、UbuntuでJNI(Java Native Interface)を使う場合のインストールディレクトリの調べ方という点では共通性の高い話だと思うので自分がわかる範囲でコメントします。


mecabをJavaから利用する場合JNIを通じて利用するようなので、C/C++のコンパイルの際にはJavaSE/OpenJDKが提供するJNI用のヘッダー(jni.h)の場所を指定する必要があります。
ヘッダーはOracleのJavaSEまたはOpenJDKをインストールした際のjava関連のファイル(binやlibディレクトリーがあるディレクトリと同一階層)のincludeディレクトリーにあります。

その場所の調べ方ですが、例えば

bash

1$ which javac 2/usr/lib/jvm/java-8-openjdk/bin/javac

などと表示されるなら
INCLUDE=/usr/lib/jvm/java-i-openjdk/include
としてください。

しかしalternativesを導入している場合/usr/binの下にシンボリックリンクができていますのでwhichだけでは場所がわからないかも知れません。その場合はls -lを用いて本当の場所がわかるまでシンボリックリンクを辿ってみてください。

例:

bash

1$ which javac 2/usr/bin/javac 3$ ls -l /usr/bin/javac 4lrwxrwxrwx 1 root root 23 1229 2016 /usr/bin/javac -> /etc/alternatives/javac 5$ ls -l /etc/alternatives/javac 6lrwxrwxrwx 1 root root 43 58 2017 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 7$ ls -l /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 8-rwxr-xr-x 1 root root 6504 1028 07:51 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac

最後の結果はシンボリックリンクではなく実体の場所ですのでここが実際のインストール場所になります。さてlinuxでJNIのコンパイルをする際に例えば上の例(open-jdk 8)の環境では以下の2つのincludeディレクトリーをC/C++コンパイラーに教える必要があります。

/usr/lib/jvm/java-8-openjdk-amd64/include
/usr/lib/jvm/java-8-openjdk-amd64/include/linux

mecab用のmakefileをみていないのではっきり分かりませんが、

INCLUDE = /usr/lib/jvm/java-8-openjdk-amd64/include

と指定すれば両方を指定したことになるのかな・・・makefileの中に

-I $(INCLUDE) -I $(INCluDE)/linux

などと書いてあればそうだと思います。


ひょっとして環境変数JAVA_HOMEが設定されているならそちらを見るのが早いという話もあります。そうなっているならmakefile上ではINCLUDE = $(JAVA_HOME)/includeなどと書けます。

投稿2017/12/03 08:36

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

15sc076

2017/12/04 05:33

全然ちゃんとした環境の説明ができなかったのに丁寧な説明ありがとうございました。 おかげで無事MeCab.jarとlibMeCab.smを生成することが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問