5

エミュレーターでアプリを実行すると、noclassdeffound 例外が発生します。

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    Intent myIntent = new Intent(ActivityPano.this, ActivityTable.class);
    startActivity(myIntent);
}

ActivityTable が例外を引き起こしています。

これは、android-library プロジェクトで定義されています。これは、java ビルド パスと android 参照ダイアログに含まれています。Eclipse にはエラーはありませんが、エミュレーターで起動するとクラッシュします。

ここに私のマニフェストがあります:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mypackage"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" android:debuggable="false" android:description="@string/description">
        <activity android:name=".ActivityHPanorama"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <activity android:name="com.mypackage.ActivityTable"></activity>

    </application>


<uses-sdk android:minSdkVersion="3"></uses-sdk>
</manifest> 

これはlogcatからのエラーです:

04-18 11:32:07.767: ERROR/dalvikvm(483): Could not find class com.mypackage.ActivityTable', referenced from method com.mypackage.ActivityHPanorama.onCreate

少し疑わしいのは、コンソールからの次の行です(logcatではありません):

[2011-04-18 14:55:59 - panorama] Could not find panorama.apk!

panorama はライブラリ プロジェクトの名前です。

4

4 に答える 4

1

アプリをインストールするときに依存関係が正しい場合は、コンソール ログに次のように表示されます。

[2011-04-19 16:41:10 - TicTacToe] TicTacToe.apk をインストールしています...

[2011-04-19 16:41:12 - TicTacToe] 成功!

しかし、あなたが言及していたので、panorama.apk が見つかりませんでした! tic-tac-toe sameple ライブラリを使用して、このような動作を再現してみました。

これは私がしたことです、

TicTacToe ライブラリを eclipse に追加しました。TicTacToe アプリも eclipse に追加しました。

Library プロジェクトを右クリックし、Android タブに移動して、IsLibrary チェックを削除しました

メインアプリプロジェクトを右クリックし、Androidタブに移動して依存関係を削除しました

メイン アプリ プロジェクトの Java ビルド パスに移動し、必要なプロジェクトとしてライブラリ プロジェクトを追加しました。

コンパイルはうまくいきましたが、アプリをインストールするときに library.apk をチェックしています。

[2011-04-19 16:42:16 - TicTacToe] TicTacToe.apk をインストールしています...

[2011-04-19 16:42:20 - TicTacToe] 成功![2011-04-19 16:42:20 - TicTacToe] プロジェクトの依存関係が見つかりました。インストール中: TicTacToeLib

[2011-04-19 16:42:20 - TicTacToeLib] TicTacToeLib.apk をデバイス 'SH0A5PL08769' にアップロードしています [2011-04-19 16:42:20 - TicTacToeLib] TicTacToeLib.apk をインストールしています... [2011-04-19 16:42:24 - TicTacToeLib] 成功!

于 2011-04-18T12:25:38.420 に答える
-1

このクラスをマニフェストに追加しましたか?

<activity android:name="ActivityTable"></activity>

于 2011-04-18T09:44:08.053 に答える
-1

問題は、「ActivityTable」にもインテントフィルターを定義していないことです...

<activity android:name=".ActivityTable" 
                  android:label="ActivityTable">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

これは役立つはずです..

于 2011-04-18T10:36:34.923 に答える
-1

使うべきだと思います

 Intent myScreen = new Intent();
    myScreen.setClassName(YourCurrentScreen.this,
fullpackagename.yourclassName.class.getName());
    startActivityForResult(myScreen, 0);

これは間違いなくうまくいくでしょう

于 2011-04-18T10:25:01.280 に答える