Ответ 1
В Eclipse перейдите в "Android-Project" → "Свойства" → "Путь сборки Java" → "Заказ и эксперт", затем выберите проект java, который вы хотите импортировать, и переместите его поверх всех записей.
У меня есть приложение для Android, которое использует другой проект в качестве ссылки на проект. я перешел в параметры приложения, построил путь, а затем выбрал проект в ссылках проекта.
все строит и развертывает отлично, но когда я пытаюсь запустить приложение и создать экземпляр класса в этом проекте, я получаю java.lang.NoClassDefFoundError errrrrr.
Я не эксперт по java-проектам, поэтому я предполагаю, что я поднял что-то простое. любые идеи?
В Eclipse перейдите в "Android-Project" → "Свойства" → "Путь сборки Java" → "Заказ и эксперт", затем выберите проект java, который вы хотите импортировать, и переместите его поверх всех записей.
Существует несколько способов решения этой проблемы. Вы можете проверить свою библиотеку как библиотеку Android: Щелкните правой кнопкой мыши по проекту/свойствам/вкладке Android - "is library".
А затем в вашем основном проекте: Щелкните правой кнопкой мыши по проекту/свойствам/вкладке Android → Добавить (и добавить проект библиотеки).
Однако сначала ваша библиотека должна быть создана как проект Eclipse Android (так что раздел "Android" будет доступен в свойствах проекта).
Я сделал это, и у меня больше нет NoClassDefFoundError. Тем не менее это решение хорошо для раннего развития. Если библиотека стабильная, вы должны сделать банку и включить ее в основной проект (и удалить ссылки на Android-библиотеку).
У меня похожие проблемы. У меня есть старый проект, который я использую в качестве пространства имен для некоторых математических и трехмерных функций. Я хотел бы поделиться этим между Android и другим кодом Java. Беда в том, что проклятая вещь падает, как только я запускаю даже тип POD из моей библиотеки. Мой внешний проект не создает файл jar; он используется только как пространство имен. Я предполагаю, что некоторые проблемы со связями во время выполнения, вызывающие это, но андроид, eclipse и java, в совокупности дают мне огромное количество никакой помощи.
У меня такая же проблема. Небольшие исследования привели меня к Библиотечному проекту, упомянутому также в этом посте. Но помните об этом:
"Вы также можете обозначить проект Android как проект библиотеки, который позволяет ему делиться с другими проектами, которые зависят от него. Когда проект Android обозначается как проект библиотеки, он не может быть установлен на устройство.
Вы можете найти дополнительную информацию:
http://developer.android.com/tools/projects/projects-eclipse.html
а также
https://groups.google.com/forum/?fromgroups#!topic/android-developers/C0pddRNGZVs
Недавно я столкнулся с очень похожими и, возможно, одной и той же проблемой. Android не любит ссылки на проекты и бросает эти рефлексы отражения, если вы попробуете, чтобы ваш проект андроида ссылался на другой проект.
Он также не хочет иметь баночки на пути сборки, вам нужно экспортировать проекты, которые вы хотите включить в свой проект android, и поместить их в папку /libs. Эта папка обычно создается, когда проект создается, если не просто сделать это самостоятельно, он входит в корень вашего проекта. Android автоматически подберет их, если они там.
Также очень важно, если ваш внешний проект также зависит от других проектов, вам также нужно экспортировать эти другие проекты, а также разместить банки в папке /libs проекта Android.
Это относится к новейшей версии Android от 22/07/2012. Он может не применяться, если вы используете более старую версию Android.
Возможно, вам придется включить JAR скомпилированного источника вашего зависимого проекта вместе с родителем. Android должен будет иметь файлы классов, чтобы он мог перекомпилировать их в байт-код Dalvik, а затем сделать их доступными в пути к классам.
Это видео может помочь вам, взяв этот вопрос.
Если ваш внешний проект зависит от других банок в своем пути к классам, убедитесь, что они экспортированы и нажмите их в верхней части списка экспорта в Eclipse. У меня была такая же ошибка NoClassDef, которая была брошена на класс, который был в проекте, но реальная проблема заключалась в том, что порядок экспорта банок зависел от него. Работала хорошо после того, как я исправил это.
Контекст: разработка веб-сайта JSP, который взаимодействует с несколькими устройствами Android в Интернете. Требуется общие классы.
Сделанные шаги:
Для проекта java, содержащего ваши общие классы:
1) (ничего не делать)
В вашем проекте Android App:
1) Свойства проекта- > Java Build Path- > Projects tab- > Добавить...
2) Свойства проекта → Ссылки на проекты → установите соответствующий флажок
3) [Как говорит Мэтью выше (и это было именно то, что мне было нужно)] "Android-Project" → "Свойства" → "Путь сборки Java" → "Заказ и эксперт", затем выберите проект java, который вы хотите импортировать и перемещать он поверх всех записей.
Для вашего проекта веб-сайта JSP:
1) Свойства проекта- > Java Build Path- > Projects tab- > Добавить...
2) Свойства проекта → Ссылки на проекты → установите соответствующий флажок