2012-07-20 179 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”。