17

数年前に取り組んでいた古い Android プロジェクトを掘り出し、それを新しい Eclipse インストール (最新の ADT など) にロードしました。

プロジェクトはすべて正常にコンパイルされ (若干の微調整の後)、アプリは正常に起動しますが、ボタンを押してメイン アクティビティを開始すると、次のスタック トレースが表示されます。

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.tmm.android.activities.GameActivity
    at com.tmm.android.activities.StartActivity.onClick(StartActivity.java:53)
    at android.view.View.performClick(View.java:2408)

問題のクラス (GameActivity) は、アプリ内にある私のクラスの 1 つなので、それが問題ではないことはわかっていますが、logcat の上部にある警告に気付きました。

Unable to resolve superclass of Lcom/tmm/android/activities/GameActivity; (33)
Link of class 'Lcom/tmm/android/activities/GameActivity;' failed

私のクラス GameActivity は、プロジェクトに含めたサードパーティの jar の一部である別のクラスを拡張します (「libs」ディレクトリに含め、Eclipse のプロジェクト ビルド パスに追加しました)。

私が間違っていた可能性があること、または考慮する必要がある可能性のあるADT / etcで変更されたことを誰でもアドバイスできますか(Eclipseで最後に使用したときは正常に機能していました)

乾杯

4

3 に答える 3

29

私も同じ問題を抱えていました。インポートされたライブラリでメソッドを呼び出すカスタム View クラスがありました。また、アプリがビューを作成しようとしたときに (そのカスタム ビューを参照するレイアウトを膨張させようとしているときに)、「スーパークラスを解決できません」というエラーが発生していました。

私は自分の問題を解決し、決定的な答えであると思うものを決定するために遊んでいました。

(執筆時点では、Eclipse Android Tools R21 を使用しています)。

外部jarを使用している場合

  • プロジェクトの「libs」フォルダーにコピーします。残りは Android ツールが行います。

使用するライブラリがワークスペース内の別のプロジェクトである場合。

  • ライブラリ プロジェクトで、[プロパティ] -> [Android] に移動し、[Is Library] チェックボックスをオンにします。
  • アプリ プロジェクトで: [プロパティ] -> [Android] に移動し、同じセクションにライブラリ プロジェクトを追加します ([追加] をクリックします)。ここで「Is Library」をチェックしないでください!

この質問に対するいくつかの回答では、Properties->Java Build Path->Projects に移動し、そこにライブラリ プロジェクトを追加する必要があると述べています。通常の Java プロジェクトではそれを行いますが、Android ツールはそれを必要としないか、使用しないようです。

最後に、エクスポートしたアプリに lib が含まれていることを確認する必要があります。

  • Properties->Java Build Path->Order and Export に移動し、ライブラリがチェックされていることを確認します。
于 2013-01-30T16:58:23.150 に答える
10

わかりました、結局は単純な問題でした。

サードパーティのライブラリをビルドパスに追加した後、エクスポートタブはデフォルトでjarをエクスポートしませんでした(Eclipseの通常の動作)。そのため、jarはデプロイメントに含まれていませんでした。

その問題を乗り越えました。

于 2012-09-04T20:23:16.887 に答える