Ошибка при вызове чистого кода Java (отдельный проект) из Android в затмении

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 пообщался или что-то в этом роде...

* UPDATE * полная ошибка 07-20 14:02:56.452: E/AndroidRuntime(30233): java.lang.NoClassDefFoundError: com.androiddesktoptest.testtest.AndroidDesktopTestMain

  • 0
    stackoverflow.com/a/10046725/1289716
  • 0
    Какой класс не может быть найден?
Показать ещё 4 комментария
Теги:

4 ответа

2
Лучший ответ

Похоже, вы не получаете класс на телефон, когда вы запускаете свой Android.

Убедись, что:

проект правой кнопки мыши - свойства - путь сборки java - порядок и экспорт (здесь он проверен?)

  • 0
    это над Android?
  • 0
    Чтобы упорядочить и экспортировать, переместите ваш внешний проект так, чтобы он был почти вверху (прямо под вашим проектом Android).
Показать ещё 5 комментариев
3

Order & Export - это не самая хорошо встроенная функция Android ADT.

Если вместо этого вы включили связанную папку src из проекта Desktop в проект Android (щелкните правой кнопкой мыши проект> путь сборки> ссылка на исходную папку), то класс будет использоваться так, как если бы он принадлежал проекту Android.

Я думаю, что предпочтительным способом сделать это было бы создание файла jar или проекта библиотеки, но это может быть слишком громоздким, чтобы попытаться, пока у вас не будет стабильного кода Deskptop.

Надеюсь, это поможет!

0

В этой статье о включении Java-библиотек в проекты Android предлагается заменить "Системную библиотеку JRE" на android.jar для вашего уровня API в связанном диалоге создания Java-проекта.

-2

попробуй это

new AndroidDesktopTestMain.callFromAndroid();

Единственным способом вызова нестатического метода из статического метода является наличие экземпляра класса, содержащего нестатический метод. По определению, нестатический метод - это метод, который называется ON экземпляром некоторого класса, тогда как статический метод принадлежит самому классу.

  • 0
    Какая? публичный статический void callFromAndroid ()
  • 0
    Я не понимаю вас. Вы пробовали приведенный выше код? Это работает?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню