2013-02-08 71 views
30

我正在開發一個libGDX項目,我有一個名爲CheerVArachnids的類,它有另一個內聯類,它是一個事件監聽器。當我在桌面上運行這個項目時,它工作正常。但是當我在我的Android設備上運行,它無法找到內嵌類,我得到以下錯誤:找不到方法XXX引用的類XXX。 <YYY>

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上,它在運行時無法找到內聯類?

+0

什麼是其餘的異常信息?我懷疑它實際上是PlaceUnitListener的超類問題(然後CodeNoob的答案將適用)。什麼是「EventSubscriber <>」? –

回答

46

由於某些ADT版本,您必須設置應該導出哪些庫/項目。

Project-Propiertes - > Java Build Path - > Order and Export - >檢查您正在使用的源和其他庫。

爲Core和Android項目執行這些導出設置。

然後它應該在Android上正常工作。

+0

這是有道理的,如果它是一個外部庫,但這是一個正確內聯定義的類。所以沒有外部項目依賴關係。瞭解PlaceUnitListener如何在構造函數之上聲明。 –

+1

我經常遇到這些錯誤,而且信息往往是錯誤的。這是它,它不能找到應該實現的接口/類,我有點不能解釋它,但是,你從哪裏得到EventSubscriber?這是來自外部庫的權利? – CodeNoob

+1

你說得對。就是這樣。感謝CodeNoob。 –

12

就我而言,一切正常,直到我爲SDK和Eclipse安裝了新的更新。

我得到了一個錯誤:「無法找到類......」

我發現了另一個計算器站點解決方案。

I have a similar problem when using external jar (in my case openCSV). The reason I had a problem was due to a change in ADT 17 (or above). What I needed to do to resolve the problem was In Eclipse go to Properties -> Java build path -> Order and export. Mark my jar. Move jar to top of the list. The solution was found in the following page which reference to a very good article.

+7

只有當我將罐子移動到列表的頂部時,它纔有效。非常感謝@syp_dino! – UmbySlipKnot

+0

@UmbySlipKnot:您的歡迎。 –

0

首先,你應該:進口XXX(類)的.java, 如果添加外部庫jar文件將其導入到lib文件夾。 之後: 右鍵單擊您的項目 - >屬性 - > Java Build Path - >訂單和導出(選項卡) - >選擇全部 - >按OK - >清理項目。

希望能解決這個問題

相關問題