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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

2501閲覧

Android 7.0未満でkuromojiが使えない

Oceans

総合スコア8

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2017/06/05 12:34

Android Studio上で形態素解析エンジンkuromojiを使い、漢字仮名交じり文をカタカナに変換するアプリを作りたいのですがAndroid 7.0未満ではjava.lang.ArrayIndexOutOfBoundsException: length=1; index=7 が表示され変換できません。

Android Studio上でプロジェクトにjarファイルを追加した後テストのためサンプルを少し変え、以下

package org.atilika.kuromoji.example; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import org.atilika.kuromoji.Token; import org.atilika.kuromoji.Tokenizer; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView) findViewById(R.id.textView); Tokenizer tokenizer = Tokenizer.builder().build(); for (Token token : tokenizer.tokenize("寿司")) { textView.setText(token.getReading()); } } }

をエミュレータ(Android 7.1.1)で実行したところ”スシ”と正常に表示されました。しかし、Android 7.0未満(つまりAndroid 6.1以下)では以下のエラーメッセージが表示され強制終了してしまいます。

2871-2871/org.atilika.kuromoji.example/AndroidRuntime: FATAL EXCEPTION: main Process: org.atilika.kuromoji.example, PID: 2871 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.atilika.kuromoji.example/org.atilika.kuromoji.example.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=7 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=7 at org.atilika.kuromoji.dict.TokenInfoDictionary.getFeature(TokenInfoDictionary.java:159) at org.atilika.kuromoji.dict.TokenInfoDictionary.getReading(TokenInfoDictionary.java:171) at org.atilika.kuromoji.Token.getReading(Token.java:79) at org.atilika.kuromoji.example.MainActivity.onCreate(MainActivity.java:20) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)? at android.app.ActivityThread.access$800(ActivityThread.java:135)? at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)? at android.os.Handler.dispatchMessage(Handler.java:102)? at android.os.Looper.loop(Looper.java:136)? at android.app.ActivityThread.main(ActivityThread.java:5017)? at java.lang.reflect.Method.invokeNative(Native Method)? at java.lang.reflect.Method.invoke(Method.java:515)? at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)? at dalvik.system.NativeStart.main(Native Method)?

これはAndroidのバージョンが原因だと思われますが、なぜエラーが起こるかわかる方がいらっしゃればぜひご回答ください。

###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 2.3.2、kuromoji-0.7.7(最新)Atilika-kuromoji
Minimum SDK(Android 4.4)

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

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

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

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

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

guest

回答1

0

私の方も同じようなエラーになりました。
そこでAndroidでKuromojiを使うを参考に、githubからkuromoji-0.9のjarを作成し、libs以下に置いて実装すると、通りました。なぜ、このようなエラーが生じるかはわかりません。

投稿2017/10/22 07:16

M-dove

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問