我有这个简单的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
答案 0 :(得分:3)
订单&导出不是Android ADT最完善的功能。
如果您将桌面项目中链接的src文件夹包含在Android项目中(右键单击项目>构建路径>链接源文件夹),则将使用该类,就好像它属于Android项目一样。
我认为这样做的首选方法是创建一个jar文件或一个库项目,但是这些可能太麻烦了,直到你有稳定的Deskptop代码才能尝试。
希望有所帮助!
答案 1 :(得分:2)
当你运行你的机器人时,听起来好像没有把课程交给电话。
确保:
右键单击项目 - 属性 - java构建路径 - 订单和导出(在此处检查?)
答案 2 :(得分:0)
This article建议在链接的Java项目的构建路径对话框中用您的API级别的android.jar替换“JRE系统库”。
答案 3 :(得分:-1)
试试这个
new AndroidDesktopTestMain.callFromAndroid();
从静态方法调用非静态方法的唯一方法是让类的实例包含非静态方法。根据定义,非静态方法是在某个类的实例上调用的方法,而静态方法属于类本身。