Android Project をEclipseで新規作成した後、実行時にClassNotFoundExceptionが発生して落ちてしまう事象が頻発したため、そのデバッグ方法をまとめました。

事象

Android Project をEclipseで新規作成した後、Activity(ここではFooActivity)を作成して実行。

以下のエラーメッセージがLogcatに表示されて異常終了する。

10-26 23:45:05.159: E/AndroidRuntime(9305): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{foo.bar/foo.bar.FooActivity}: java.lang.ClassNotFoundException: foo.bar.FooActivity

caused by は次のようなメッセージ。

10-26 23:45:05.159: E/AndroidRuntime(9305): Caused by: java.lang.ClassNotFoundException: foo.bar.FooActivity

メッセージを見る限りだと、うまくclassファイルが作成されていない or Activityの指定方法が誤っていてうまく名前で解決できていないことが原因。

 

 

解決法

まず、AndroidManifest.xmlにActivityが正しく設定されていることを確認しました。

これは、application要素内のactivityのandroid:nameに指定しているActivityが存在していること+

manifest要素のpackageとActivityの配置しているパッケージ名が同一であることによって確認できます。

<activity

            android:name=“.FooActivity”

            android:label=“@string/app_name” >

次にライブラリの設定を確認。

利用しているライブラリを、JavaのBuildPathに設定しているとプロジェクトエクスプローラ上ではコンパイルエラーとならない。

しかし、ライブラリのうち他のプロジェクトをライブラリとして利用しているものについては、PropertiesのAndroidから設定できるLibraryのところで追加しておかないと実行時にエラーがでてしまう。

今回はこれが原因でした。

そのため、LibraryのAddから利用しているライブラリプロジェクト(このときはappcompat_v7が原因でした)を追加することで正常に実行することができるようになりました。

Leave a Reply

Your email address will not be published. Required fields are marked *