2014-11-27 1 views
6

Я создал простую программу для тестирования сценария, который не работает с NoClassDefFoundError.NoClassDefFoundError в вложенной банке (Android)

Возьмем, к примеру, у меня есть проект Test1 android с классом TestClass с некоторыми методами. Этот проект Test1, который я экспортировал как test1.jar и экспортировал только исходную папку с Class TestClass и classpath и. project.

В другом проекте Android Test2 я добавил это test1.jar в папку моих libs. И в этом проекте Test2 у меня есть класс Test2Class, который вызывает методы класса test1.jar.

После этого я экспортировал этот проект Test2 как файл test2.jar, выполнив следующие шаги.

Так что, когда я использую этот test2.jar в другом проекте, я получаю это выше ошибки NoClassDefFoundError. Это сценарий банки в банке.

Где-нибудь я должен что-то сделать, чтобы я мог получить доступ к банке внутри банки.

Заранее спасибо.

+0

Вы указали это в заказе и экспортируете в настройках сборки проекта? – Suvitruf

+0

Я попробовал добавить в порядок и экспортировать. А также в папке libs. Я думаю, что я попробовал почти все комбинации с Order and Export: P. –

+0

я думаю ошибка есть. файл проекта. удалите его и проверьте и сообщите мне, если он будет работать. – Dev

ответ

0

Удалить банки из пути сборки java. Добавьте новое имя папки как «libs» и разместите все банки в этой папке. Приложение будет работать нормально

+1

У меня все еще есть NoClassDefFoundError. –

+0

Просьба перечислить библиотеки и раздел «Заказ и экспорт». В этом не должно быть банок. Если да, то удалите его. Если возникло исключение, отправьте скриншот для библиотек и Order and Export of java build path. –

+0

Ya, как вы сказали, я поместил файл test1.jar в папку libs проекта Test2 и удостоверился, что он не в порядке и не экспортирует и не создал test2.jar. И как и этот test2.jar, я добавил еще один новый проект libs и убедитесь, что он не в порядке и не экспортируется. –

0

Попробуйте это:

Перейти к Project/Properties/Java Build Path/Order и Export - Убедитесь, что есть проверка перед Android зависимостей и библиотека поддержки, если вы его используете.

Отметьте все флажки и нажмите «Применить» и очистить проект.

+0

Да, я сделал это и попробовал. Это помогает мне. –

3

Попробуйте это шаг за шагом:
1. Remove all library проекты, затем очистить.
2. Перейти к первому проекту Test1 Щелкните правой кнопкой мыши Свойства -> Android. Проверьте Is Library (сделайте это в библиотеке).
3. Перейдите во второй проект Test2 Щелкните правой кнопкой мыши Свойства -> Android в разделе «Библиотека» выберите Add -> Добавить первый проект в качестве библиотеки.
4. Перейдите во второй проект Test2 Щелкните правой кнопкой мыши Свойства -> Android. Кроме того, проверьте Is Library.
5. Перейти к третьему project C Щелкните правой кнопкой мыши Свойства -> Android. В разделе «Библиотека» выберите «Add ->« Добавить первый и второй »в качестве библиотеки. (Не создавайте Proj C в качестве библиотеки)
6. Теперь очистите все и запустите Proj C.
Редактировать: Вы также можете увидеть эту ошибку Bug 405212 - Do not pack jars bundled inside a packed jar и Bug 361628 - Nested jars cannot be unpacked with Java 1.7. Попробуйте сделать так, как должно работать.

+0

Если вы хотите применить исправление для ошибки, вы можете увидеть [это] (https://bugs.eclipse.org/bugs/attachment.cgi?id=229472&action=edit). Также см. Eclipse [помочь применить патч] (http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-68c.htm). –

0

Невозможно сделать. Вам нужно будет разархивировать JAR и добавить их в путь к классам, чтобы открыть вложенный JAR. См. Это Java bug для справки.

Есть несколько альтернатив обращения с ним надлежащим образом, см this question, например, который рекомендует One-jar, Uber jar или Shade

Примечание: Это относится к Java, Andoid может вести себя разные, но кажется, что это имеет такую ​​же проблему.

+0

Вот и все. Не может быть сделано ваше высказывание. Метод с одним банком или методом Убер является сложным и не содержит правильного учебника. –

+0

Нет, это невозможно сделать обычными способами. Чтобы проверить, выполните ли поиск Google «java вложенные банки», вы найдете много людей с той же проблемой. Обходной путь состоит в том, чтобы распаковать zar и добавить их в неаккуратные или с помощью другого решения. – Fredrik

 Смежные вопросы

  • Нет связанных вопросов^_^