web-dev-qa-db-ja.com

メソッドXXXから参照されているクラスXXXが見つかりませんでした。<YYY>

私は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で、実行時にそのインラインクラスが見つからない理由はありますか?

30
b-ryce

一部のADTバージョンでは、どのライブラリ/プロジェクトもエクスポートする必要があるかを設定する必要があります。

Project-Propiertes-> Java Build Path-> Order and Export->使用しているソースと他のライブラリを確認します。

これらのエクスポート設定を、コアプロジェクトおよびAndroidプロジェクトに対して実行します。

その後、Androidで正常に動作するはずです。

46
CodeNoob

私の場合、SDKとEclipseの新しい更新プログラムをインストールするまで、すべてが正常に機能しました。

エラーが発生しました:「クラスが見つかりませんでした...」

別のstackoverflowサイトで解決策を見つけました。

外部jar(私の場合はopenCSV)を使用すると、同様の問題が発生します。問題が発生した理由は、ADT 17(またはそれ以上)の変更によるものです。問題を解決するために必要なことは、Eclipseで[プロパティ]-> Java build path-> Order and export。jarをマークします。jarをリストの一番上に移動します。 次のページ にあり、非常に優れた記事を参照しています。

12
syp_dino

最初に必要なこと:import XXX(Class).Java、外部ライブラリjarファイルを追加した場合、LIBフォルダにインポートします。その後:プロジェクトを右クリック->プロパティ-> Java Build Path-> Order and Export(tab)-> Allを選択-> OKを押して->プロジェクトをクリーンアップします。

これがこの問題を解決することを願っています

0
user3468848