2012-07-20 94 views
1

調用來自Android的純Java代碼(獨立的項目)時,我有這個簡單的Java代碼:錯誤在日食

package com.androiddesktoptest.testtest; 

public class AndroidDesktopTestMain 
{ 
    public static void main(String[] args) 
    { 
     callFromAndroid(); 
    } 

    public static void callFromAndroid() 
    { 
     System.out.println("DESKTOP CODE CALLED FROM ANDROID"); 
    } 
} 

而且我想從Android這樣稱呼它:

import com.androiddesktoptest.testtest.AndroidDesktopTestMain; 

public void onCreate(Bundle savedInstanceState) 
{ 
    //... 
    AndroidDesktopTestMain.callFromAndroid(); 
} 

和我得到我使用Eclipse和我的項目AndroidDesktopTest java.lang.NoClassDefFoundError

已檢查出口AndroidDesktopTest/src目錄。另外,eclipse在Android中自動完成我的代碼,所以它可以在桌面項目中正確地看到我的代碼。

我做錯了什麼?我確實在我以前,以前,以前的項目這樣的事情,從這個時候,也許司已chaged或東西...

* UPDATE * 整個錯誤 07-20 14:02:56.452: E/AndroidRuntime(30233): java.lang.NoClassDefFoundError: com.androiddesktoptest.testtest.AndroidDesktopTestMain

+0

http://stackoverflow.com/a/10046725/1289716 – MAC 2012-07-20 12:30:12

+0

哪個類不能被發現的? – DaveRlz 2012-07-20 12:30:58

+0

我沒有問題與罐子,但與分開的項目。 – SuitUp 2012-07-20 12:30:58

回答

2

聽起來像你沒有得到類的手機,當你運行你的機器人。

確保:

右鍵項目 - 屬性 - Java構建路徑 - 訂單和出口(就是在這裏檢查?)

+0

它是android嗎? – 2012-07-20 12:52:35

+0

爲了順序和導出,請將您的外部項目向上移動,以便它幾乎位於頂部(在您的Android項目下)。 – 2012-07-20 12:59:09

+0

我認爲他指的是圖書館出口訂單的優先順序。 – Graeme 2012-07-20 13:33:29

-1

試試這個

new AndroidDesktopTestMain.callFromAndroid(); 

調用從一個靜態方法的非靜態方法中的唯一方法是具有包含非靜態方法的類的一個實例。根據定義,非靜態方法是一個被稱爲ON的某個類的實例,而靜態方法屬於該類本身。

+0

什麼?公共靜態無效callFromAndroid() – SuitUp 2012-07-20 12:50:44

+0

我沒有得到你..你有沒有嘗試過上面的代碼?它工作嗎? – MicroEyes 2012-07-20 12:52:58

+0

callFromAndroid是靜態的,所以我不明白你的答案...是的,我試過了(看另一個答案,同樣奇怪的建議)。 – SuitUp 2012-07-20 12:58:43

3

訂購&出口是不是在Android的最精心打造特色ADT。

如果改爲包括從桌面項目到你的Android項目鏈接的src文件夾(右鍵單擊項目>構建路徑>鏈接源文件夾),那麼,如果它屬於的Android項目的類將被使用。

我想這樣做的首選方式是創建一個jar文件或庫項目,但這些可能是太麻煩了嘗試,直到你有穩定的Deskptop代碼。

希望有幫助!

0

This article關於將Java庫包含到Android項目中,建議在鏈接的Java項目的構建路徑對話框中用您的API級別的android.jar替換「JRE System Library」。