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)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。