У меня есть этот простой 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 пообщался или что-то в этом роде...
* UPDATE * полная ошибка 07-20 14:02:56.452: E/AndroidRuntime(30233): java.lang.NoClassDefFoundError: com.androiddesktoptest.testtest.AndroidDesktopTestMain
Похоже, вы не получаете класс на телефон, когда вы запускаете свой Android.
Убедись, что:
проект правой кнопки мыши - свойства - путь сборки java - порядок и экспорт (здесь он проверен?)
Order & Export - это не самая хорошо встроенная функция Android ADT.
Если вместо этого вы включили связанную папку src из проекта Desktop в проект Android (щелкните правой кнопкой мыши проект> путь сборки> ссылка на исходную папку), то класс будет использоваться так, как если бы он принадлежал проекту Android.
Я думаю, что предпочтительным способом сделать это было бы создание файла jar или проекта библиотеки, но это может быть слишком громоздким, чтобы попытаться, пока у вас не будет стабильного кода Deskptop.
Надеюсь, это поможет!
В этой статье о включении Java-библиотек в проекты Android предлагается заменить "Системную библиотеку JRE" на android.jar для вашего уровня API в связанном диалоге создания Java-проекта.
попробуй это
new AndroidDesktopTestMain.callFromAndroid();
Единственным способом вызова нестатического метода из статического метода является наличие экземпляра класса, содержащего нестатический метод. По определению, нестатический метод - это метод, который называется ON экземпляром некоторого класса, тогда как статический метод принадлежит самому классу.