библиотека Android - noclassdeffounderror поднят для макетов из библиотеки - PullRequest
0 голосов
/ 06 января 2012

Я столкнулся со следующей проблемой:

1) У меня есть библиотека (выбрана «[x] Is Library»), созданная в Eclipse.Имеется 2 макета (main.xml и еще один).

2) Это работает очень хорошо, когда я использую его в одном Eclipse Workspace - я могу легко включить его в другой проект и использовать его без проблем.

3) В последнее время мое рабочее пространство стало огромным, и Eclipseдаже медленнее, чем раньше (и я работаю над нетбуком с процессором Intel Atom).Поэтому я решил создать новый.

4) Я скопировал файл mylibrary.jar из его папки bin, в том числе library.jar в новом проекте работал хорошо.Все компилируется, но во время выполнения макет java.lang.NoClassDefFoundError: my.namespace.mylibrary.R $ запускается при запуске.

Что я сделал:

1) Я попытался найти решение здесь на stackoverflow, но NoClassDefFoundError в проекте внешней библиотеки для Android - это то, что я нашел, но у меня уже естьдобавлен файл jar.

2) Затем я просмотрел файл jar (переименованный в zip & unpacked) и увидел, что класс макета R $ там не включен .

Как включить классы макета в файл library.jar?

Это действительно источник моей проблемы или я делаю что-то еще не так?

Спасибо за совет.

Редактировать: Я проверил, и удаление макетов XML из библиотеки (например, создание фиктивного макета в коде) останавливает NoClassDefFoundError.Тем не менее, глядя на файл admob.jar, кажется, можно включить класс R & layout в файл jar.

Ответы [ 3 ]

3 голосов
/ 15 мая 2012

У меня была такая же проблема. Проблема была в этой строке в моем производном действии:

setContentView(R.layout.my_layout);

Eclipse импортировал R из моего библиотечного проекта. Проблема решена путем замены на правильный импорт R.

0 голосов
/ 07 января 2012

Кажется, что единственным ответом на этот вопрос является создание макетов в файле .java, а не в .xml. Проверено это и работает хорошо. Понятия не имею, как admob включить их макеты в файл .jar.

0 голосов
/ 06 января 2012

Чтобы добавить проект библиотеки, сначала убедитесь, что ваш проект библиотеки действительно помечен как проект библиотеки.Щелкните правой кнопкой мыши узел проекта -> свойства -> Android -> установите флажок «Библиотека» -> ОК.

Затем в основном проекте Android: щелкните правой кнопкой мыши узел проекта ->свойства -> Android -> Добавить -> Выбрать проект библиотеки -> ОК -> ОК

...