私はlibGDXプロジェクトに取り組んでおり、イベントリスナーである別のインラインクラスを持つCheerVArachnidsというクラスがあります。このプロジェクトをデスクトップで実行すると、問題なく動作します。しかし、Androidデバイスで実行すると、そのインラインクラスが見つからず、次のエラーが表示されます。
Could not find class 'com.bbj.cva.CheerVArachnids$PlaceUnitListener', referenced from method com.bbj.cva.CheerVArachnids.<init>
クラスの重要な部分は次のとおりです。
package com.bbj.cva;
public class CheerVArachnids implements ApplicationListener {
class PlaceUnitListener implements EventSubscriber<PlaceUnitEvent> {
@Override
public void onEvent(PlaceUnitEvent event)
{
//
}
}
public CheerVArachnids() {
EventBus.subscribe(PlaceUnitEvent.class, new PlaceUnitListener());
EventBus.subscribe(RemoveScreenObjectEvent.class,
new RemoveScreenObjectListener());
}
}
Androidで、実行時にそのインラインクラスが見つからない理由はありますか?
一部のADTバージョンでは、どのライブラリ/プロジェクトもエクスポートする必要があるかを設定する必要があります。
Project-Propiertes-> Java Build Path-> Order and Export->使用しているソースと他のライブラリを確認します。
これらのエクスポート設定を、コアプロジェクトおよびAndroidプロジェクトに対して実行します。
その後、Androidで正常に動作するはずです。
私の場合、SDKとEclipseの新しい更新プログラムをインストールするまで、すべてが正常に機能しました。
エラーが発生しました:「クラスが見つかりませんでした...」
別のstackoverflowサイトで解決策を見つけました。
外部jar(私の場合はopenCSV)を使用すると、同様の問題が発生します。問題が発生した理由は、ADT 17(またはそれ以上)の変更によるものです。問題を解決するために必要なことは、Eclipseで[プロパティ]-> Java build path-> Order and export。jarをマークします。jarをリストの一番上に移動します。 次のページ にあり、非常に優れた記事を参照しています。
最初に必要なこと:import XXX(Class).Java、外部ライブラリjarファイルを追加した場合、LIBフォルダにインポートします。その後:プロジェクトを右クリック->プロパティ-> Java Build Path-> Order and Export(tab)-> Allを選択-> OKを押して->プロジェクトをクリーンアップします。
これがこの問題を解決することを願っています