web-dev-qa-db-ja.com

ClassNotFoundExceptionを引き起こすFragmentActivity

Android SDK Manager to update Android SDK Tools to revision 17とAndroid Compatiblity to revision 7を使用しました。 、私が長い間実行してきたプログラムが起動時にクラッシュします。

問題を絞り込むために、新しい空のプロジェクトを作成し、ビルドパスにAndroid-support-v4.jarを追加し、ActivityをFragmentActivityに変更しました。今それはクラッシュします。

エラーメッセージは次のとおりです。

Java.lang.ClassNotFoundException: com.example.test.TestActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.test-2.apk]

コードは次のとおりです。

package com.example.test;

import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;

public class TestActivity extends FragmentActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

マニフェストを含め、他のすべてはデフォルトから変更されていません。どんな助けでも大歓迎です!

編集:以下に含まれるマニフェスト:

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

    <uses-sdk Android:minSdkVersion="9" />

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name" >
        <activity
            Android:name=".TestActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
28
Dave

Android SDK Tools r17の問題であることが判明しました。以前、次のチュートリアルで提供されている方法を使用していました。

http://mobile.tutsplus.com/tutorials/Android/android-compatibility-working-with-fragments/

ただし、これは機能しなくなりました。代わりに、Eclipseでプロジェクトを右クリックしてAndroid Tools-> Add Support Library ...を選択するだけで済みました。

これを行うと、Javaビルドパスに移動して[外部JARを追加...]をクリックする必要がなくなりますが不要になります。 」

ADT r17でのJARファイルの問題 からのこの解決策についてeMichに感謝

27
Dave

私は同じ問題を抱えていましたが、stackoverflowで見つけた回答のどれも私の問題を解決しませんでした。数回の(多くの)試行錯誤の後、プロジェクトのビルドパスを構成することで問題を解決しました。 Eclipseでプロジェクトを右クリック> Build Path> Configure Build Path...Order and ExportタブでAndroid Private Librariesをチェックし、OKをクリックします。その後、プロジェクトをクリーンアップして、もう一度実行してみます。

自分のプロジェクトを、期待どおりに実行できる他の(新しく作成された)プロジェクトと比較することで、この問題を解決しました。各構成とそれらのAndroidManifest.xmlを比較しました。

これがあなたにも役立つことを願っています:)

[〜#〜] update [〜#〜]その他の解決策:ANTの使用

この問題を解決する別の方法を見つけました。ANTを使用することです。友人も同じ問題に直面しましたが、ビルドパスを修正しても問題は解決しませんでした。別のIDE=バージョン、別のADTバージョン、または別のオペレーティングシステム(私はGNU/Linuxを使用しています)を使用しているためかどうかはわかりません。その後、ANTを使用するように彼に提案しましたIDEのものではなく。

まず、プロジェクト(ライブラリプロジェクトを含む)ごとにbuild.xmlを実行して、プロジェクトをセットアップ(Android update project -p <project-dir> -n <project-name>を作成)します。次に、メインプロジェクトのディレクトリからant debugを実行してビルドし、ant installdを実行してインストールし、アプリケーションを実行します。

奇妙なことに、彼がこの方法で成功すると、ANTがまったくなくてもIDEを使用してコンパイルできるようになります。

11
fikr4n

同じ問題が、ビルドパス->ビルドパスの構成->注文とエクスポート->プライベートライブラリの追加->確認で解決されました。

次に、プロジェクトをクリーンアップします。

大きな問題を解決しました。

0
Rach

私は

 Java.lang.NoClassDefFoundError: com.Android.example.SupportFragment
    at com.Android.example.SupportFragmentActivity.onCreate()

popupMenu

SupportFragment extends SherlockFragment implements PopupMenu.OnMenuItemClickListener
...
    @Override
    public boolean onMenuItemClick(Android.view.MenuItem item) {
        return onOptionsItemSelected(item);
    }

aPI 17アプリをAPI 8と互換性のあるものにしようとした場合、唯一の兆候は上記のlogcatエラーでした。このエラーが発生した場合は、インポートされたすべてのクラスがサポートされていることを確認してください。

0
TouchBoarder

フラグメントのアクティビティがマニフェストに正しくリストされていると思いますか?これが、マニフェスト内の私のメインのFragmentActivityクラスです。

    <activity Android:name=".Polling" Android:label="@string/app_name"
        Android:windowSoftInputMode="stateHidden">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
0
Davek804

パッケージエクスプローラーでプロジェクトを選択>右クリック> Androidツール> PRojectプロパティの修正およびプロジェクトの試行>クリーン

その後、再実行してください。

0
petey

私も同じ問題を抱えており、以下の方法で解決しました。何らかの理由でビルドパスからプライベートライブラリのチェックを外している場合は、ビルドパスにAndroidv-4 jarを追加して、[注文とエクスポート]タブで有効にする(チェックする)だけです。

0
Kuldip Sharma