2012-04-20 24 views
0

私は少しこれに固執しています。このようなクラスがあるにもかかわらず、AndroidはClassNotFoundExceptionを投げています。ClassNotFoundExceptionクラスが存在する場合?

04-20 09:07:50.179: E/AndroidRuntime(525): FATAL EXCEPTION: main 
04-20 09:07:50.179: E/AndroidRuntime(525): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.company.app/com.company.app.Main}: java.lang.ClassNotFoundException: com.company.app.Main 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.os.Looper.loop(Looper.java:137) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-20 09:07:50.179: E/AndroidRuntime(525): at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 09:07:50.179: E/AndroidRuntime(525): at java.lang.reflect.Method.invoke(Method.java:511) 
04-20 09:07:50.179: E/AndroidRuntime(525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-20 09:07:50.179: E/AndroidRuntime(525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-20 09:07:50.179: E/AndroidRuntime(525): at dalvik.system.NativeStart.main(Native Method) 
04-20 09:07:50.179: E/AndroidRuntime(525): Caused by: java.lang.ClassNotFoundException: com.company.app.Main 
04-20 09:07:50.179: E/AndroidRuntime(525): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
04-20 09:07:50.179: E/AndroidRuntime(525): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
04-20 09:07:50.179: E/AndroidRuntime(525): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
04-20 09:07:50.179: E/AndroidRuntime(525): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
04-20 09:07:50.179: E/AndroidRuntime(525): ... 11 more 

Main.javaMainと呼ばれる、このようなクラスがあります。

public class Main extends FragmentActivitycom.company.appである。

これまではうまくいきましたが、今日私がこのアプリで作業を開始したときには、今は機能しなくなりました。私は何が起こったのか分からない。

マニフェストで正しく定義されています。私が試した

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.company.app" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="4" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Light" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".Main" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

いくつかのこと:

  • 再起動のEclipse
  • エミュレータ
  • のアンインストールを再起動し、プロジェクトをクリーニングエミュレータ
  • でアプリを再インストールします。
  • gensrcがビルドパスのSourceタブにあるかどうかを確認してください。

現在のように、私は現在のプロジェクトを放棄しなければならないかもしれません。

ご協力いただければ幸いです。

UPDATE:MainActivity代わりのFragmentActivityを拡張する場合

アプリが動作します。おそらくそれはAndroidサポートパッケージのものですか?

UPDATE 2:

私はそれがかなり確信しています。サポートパッケージを使用せず、Android 3.0以降の標準のFragmentクラスを使用すると、アプリは正常に動作します。


問題は修正されました。 :)

何らかの理由で、Androidサポートパッケージがプロジェクト内の/libsディレクトリから削除され、外部の場所(workspaceディレクトリの外)から参照されていました。

私はアブド・イガルの最初の答えを正しいとマークし、彼は正しい道を私に指示しました。

+0

'Main.java'のコードを表示できますか? – Herry

答えて

1

あなたの主な活動のonCreateにエラーがあるようです。もしonCreate(Bundle savedInstance)を提供していたら、それをクリアして、それがうまく動作するかどうか試してみてください。

これが機能しない場合は、extend FrameActivityの代わりにextendアクティビティを使用してみてください。

幸運

+0

私は 'onCreate'の全体をコメントアウトしようとしましたが、まだ問題がありました。 'FragmentActivity'から' Activity'に変更DIDは動作します!しかし、私のアプリケーション全体がFragmentsに基づいているので、私は 'FragmentActivity'を使う必要があります。おそらくそれはAndroidサポートパッケージの何かですか? –

+0

android.support.v4.app.FragmentActivity などのパッケージを使用しましたか?FragmentActivityという名前の複数のクラス(異なるパッケージ)が存在する可能性があります。 –

+0

はい。 'import android.support.v4.app.FragmentActivity;' –

0

あなたquitionの詳細から、私はあなたが親切にあなたのAndroidManifest.xmlファイルのエントリをチェックし、AndroidManifest.xmlににあなたのFrameActivityを宣言するのを忘れていることを前提としています。

+0

'FragmentActivity'は私が書いたカスタムクラスではありません。それはAndroidに含まれています。 (私はAndroidサポートパッケージのものを使用しています) –

+0

マニフェストで宣言する必要はありますか? –

+0

よく聞いてください。 あなたのデフォルトの活動でない場合、あなたはマニフェストファイルにエントリーを作る必要があります。 – Neha

0

は私がFragmentActivitiesは、通常の活動の一部である必要がありますね、あなたはFragmentActivity間違った方法を使用したと思われる、以下参照:このリンクから撮影

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
    <fragment 
     android:name="com.mamlambo.tutorial.tutlist.TutListFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tutlist_fragment" 
     android:layout_weight="45"> 
    </fragment> 
    <fragment 
     android:name="com.mamlambo.tutorial.tutlist.TutViewerFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tutview_fragment" 
     android:layout_weight="55"> 
    </fragment> 
</LinearLayout> 

(パート9)

http://mobile.tutsplus.com/tutorials/android/android-sdk_fragments/

+0

これを試してみます。しかし、なぜそれは以前に動作し、突然動作を停止しましたか? –

+0

私は少し試してみましたが、Androidサポートパッケージを使用すると間違っています。 Android 3.0以降で通常のフラグメントクラスを使用している場合、アプリは正常に動作します。何か案は? –

0

プロジェクトフォルダを右クリック=>プロパティ=> Javaビルドパス=>注文と書き出し=>チェックされていない場合は、 "Android Private Libraries"チェックボックスをオンにします。きれいにしてください。そしてそれは動作します!

0

私はMobilTutsサンプルで同じ問題を抱えていますが、問題はサポートライブラリにありました。 ビルドターゲットを10よりも上位のAPIに変更しました。たとえば、15のようになり、すべてのエラーが消えました。

プロジェクトのプロパティ - >アンドロイド - >プロジェクトのターゲットをビルド - > 15 .e.g

勧告にそれを設定します。LESTで8にマニフェスト内部セットMINのAPI。

関連する問題