Android アプリ開発で jar ファイル中のクラスが見つけられず “Caused by: java.lang.NoClassDefFoundError” というエラーが発生する
Android アプリ開発における jar ファイルの扱い
Java では、ライブラリは jar ファイルとして固められていることが多い。 当然ながら Android アプリ開発でも jar ファイルを扱う。
Android アプリ開発のための Eclipse ADT plug-in の Android SDK Tools 17 以降では、jar ファイルを libs ディレクトリの中に入れると、特にビルドパスなどを変更しなくても自動的にアプリの依存ライブラリに含まれるようになったらしい。 便利な世の中だ。
“Caused by: java.lang.NoClassDefFoundError” というエラーが発生する
というわけでさっそく自作の jar ファイルを libs ディレクトリに入れてみたのだけど、何故か実行時に下記のようなエラーが発生して、アプリが強制終了してしまった。
Caused by: java.lang.NoClassDefFoundError: info.vividcode.utils.XXXX
ビルド時にはエラーは出ていないのに実行時にクラス定義が見つけられていないので、何か設定が間違ってるのかと思ったが、「Android SDK Tools 17 以降では libs ディレクトリに jar ファイルを入れるだけで良い」 という情報ばかりで、その通りにやってるのになぜかうまくいかなかった。
下記は Android SDK Tools 17 に更新したら jar ファイルが見つからなくなってしまったという話の記事。