1

我有这个简单的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();
}

我得到java.lang.NoClassDefFoundError

我正在使用 Eclipse,我的项目 AndroidDesktopTest 已检查导出 AndroidDesktopTest/src。此外,eclipse 在 Android 中自动完成我的代码,因此它可以在桌面项目中正确地看到我的代码。

我做错了什么?我在以前的以前以前的项目中做过这样的事情,从这个时候开始,也许 ADT 已经改变了或者什么......

* 更新 * 整个错误 07-20 14:02:56.452: E/AndroidRuntime(30233): java.lang.NoClassDefFoundError: com.androiddesktoptest.testtest.AndroidDesktopTestMain

4

4 回答 4

3

Order & Export 并不是 Android ADT 最完善的功能。

如果您将桌面项目中的链接 src 文件夹包含到您的 Android 项目中(右键单击项目 > 构建路径 > 链接源文件夹),那么该类将被使用,就好像它属于 Android 项目一样。

我认为这样做的首选方法是创建一个 jar 文件或一个库项目,但在您拥有稳定的桌面代码之前,这些可能太麻烦而无法尝试。

希望有帮助!

于 2012-07-20T13:31:19.710 回答
2

当你运行你的安卓系统时,听起来你没有把课程转到手机上。

确保:

右键项目-属性-java构建路径-排序和导出(这里检查了吗?)

于 2012-07-20T12:47:58.863 回答
0

这篇关于将 Java 库包含到 Android 项目中的文章建议在链接的 Java 项目的构建路径对话框中将“JRE 系统库”替换为您的 API 级别的 android.jar。

于 2012-07-20T13:34:38.400 回答
-1

试试这个

new AndroidDesktopTestMain.callFromAndroid();

从静态方法调用非静态方法的唯一方法是拥有一个包含非静态方法的类的实例。根据定义,非静态方法是在某个类的实例上调用的方法,而静态方法属于类本身。

于 2012-07-20T12:41:37.150 回答