2011-12-07 21 views
0

我正在開發一個基於前一個Java程序的類的Android應用程序。但是每當我嘗試從Java項目中調用一個方法時,我都會在Android模擬器上看到錯誤:「不幸的是,MyApp已經停止。」Android - 如何使用另一個Java項目的方法

一個例子:

Toast.makeText(getBaseContext(), User.dummyString(), Toast.LENGTH_SHORT).show(); 

原因此錯誤,其中,所述用戶類被像這樣定義:

public class User { 

    public static String dummyString(){ 
     return "Hello hello"; 
    } 

} 

我有Java項目添加到Android項目的構建路徑,和我在Java項目的構建路徑的「訂購和導出」選項卡中勾選了src文件夾。我該如何解決這個問題?

+0

你能打印出你的Logcat的實際堆棧跟蹤的錯誤? 「不幸的是,MyApp已經停止了。」是最終用戶消息。 – Andrew

+0

啊發現了! Logcat正在向各地扔東西,所以我一定錯過了它。這似乎是相關的: _java.lang.NoClassDefFoundError:com.GC01.Coursework.User_ 仍然不清楚爲什麼它不能找到類定義雖然... – user1002973

+0

我發佈了一個答案在下面。請記住,Logcat是你的朋友。 – Andrew

回答

0

因此,首先,你似乎在實例化你的User類是錯誤的。

而不是使用。

User.dummyString(); 

你應該初始化它這樣的..

User user = new User(); 

然後嘗試用你的方法吧。

此外,如果您發佈錯誤,它會有所幫助。

+0

我認爲他做得很好,因爲dummyString()方法是靜態的,所以在使用User.dummyString()時有什麼問題。 –

+0

dummyString()是一個靜態方法,所以他應該實例化用戶 – nwaltham

+0

這是一個靜態方法,這就是爲什麼我直接使用類的名稱而不創建實例。我嘗試過實例化一個新的用戶();'無論如何,但它給了同樣的錯誤。它不會告訴我一個try-catch錯誤,它只是顯示我[this](http://imgur.com/u3vvM),然後關閉應用程序。 – user1002973

0

java.lang.NoClassDefFoundError: com.GC01.Coursework.User意味着android無法找到您的User類。你正在鏈接庫,但apk不包裝它。您可能需要再次檢查構建過程,但最簡單的解決方法是將源直接包含在項目中。

+0

當你說我應該直接在我的項目中包含源代碼時,你的意思是複製包含相關代碼的文件夾?我寧願不這樣做,因爲我正在並行開發Java項目,並且不希望必須進行兩次所有更改。我應該在構建過程中檢查什麼樣的事情? – user1002973

+0

如果您使用源代碼控制進行開發,保持代碼更新並不是一項挑戰。 (git:http://www.eclipse.org/resources/resource.php?id=528,svn:http://subclipse.tigris.org/)但是如果你堅持保留代碼的單個副本,那麼官方的Android參考爲我工作:http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject – Andrew

+0

我知道我的後者解決方案只適用於Android庫,而你的其他來源,你是試圖鏈接到不是。對於非android庫,Dalvik需要lib文件夾中的文件的編譯jar,否則不會將其添加到項目中(即使您在構建路徑中列出源的位置)。看到這個以前接受的解決方案:http://stackoverflow.com/a/2539055/902730 – Andrew

相關問題