В моем проекте нет сгенерированного файла R.java

Я изучаю учебник по блокноте, упражнение 2. Я начал с создания нового проекта Android и выбрал Создать из источника, чтобы импортировать загруженные исходные файлы для упражнения.

Но теперь я получаю много ошибок в Eclipse, и проблема в том, что не существует сгенерированного класса R.java. Как я могу это решить? Папка gen/ пуста.


У меня есть ошибки в Notepadv2.java и в res/layout/note_edit.xml, и оба, похоже, связаны с тем, что сгенерированный R.java отсутствует.

Вот мои import высказывания в Notepadv2.java:

import android.R;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter; 

Они создаются командой Eclipse Ctrl + Shift + O.


person Jonas    schedule 03.11.2010    source источник
comment
Для тех, кто все еще испытывает проблемы с тем, что eclipse не может обновить / сгенерировать R.java. Возможное решение - создать фиктивный xml и просто удалить этот xml. В моем случае это решение   -  person denil    schedule 25.06.2012
comment
Буквально весь день пытался найти ответ на этот вопрос ... И для appcombat, и для вашего проекта. Перейдите к свойствам ›Android и измените Project Built Target на уровень API 21.   -  person James111    schedule 16.07.2015


Ответы (21)


Перейдите к Project и нажмите Clean. Это должно, среди прочего, регенерировать ваш файл R.java.

Также избавьтесь от любых import android.R.* операторов, а затем выполните упомянутую мною очистку.

Видимо проблема Йонаса была связана с неправильными настройками целевой сборки. Его целевая сборка была установлена ​​на Android 2.1 (SDK v7), где его XML макета использовал элементы Android 2.2 (SDK v8) (параметр макета match_parent), из-за этого не было способ для Eclipse правильно сгенерировать файл R.java, который вызвал все проблемы.

person Octavian A. Damiean    schedule 03.11.2010
comment
@Jonas: Пожалуйста, опубликуйте свой импорт. - person Octavian A. Damiean; 03.11.2010
comment
@Jonas: точно. Раздел импорта вашего основного приложения. - person Octavian A. Damiean; 03.11.2010
comment
Когда я меняю цель сборки с Android 2.1 на Android 2.2, создается R.java. Но когда я возвращаюсь к Android 2.1, а после Project>Clean, R.java снова удаляется. - person Jonas; 03.11.2010
comment
@Jonas: Не меняйте целевую сборку. Вы пробовали то, что я упомянул? - person Octavian A. Damiean; 03.11.2010
comment
Да, Project > Clean мне не помогает. После этого я получаю две ошибки в представлении Problems. См. Мой комментарий к WarrenFaith - person Jonas; 03.11.2010
comment
после того, как пробирался через легионы беспорядков групп Google, пытаясь найти это решение ... что бы вы знали, это было все время на ТАК. - person ina; 08.07.2011
comment
почему избавление от импорта решает проблему? Для меня это не имеет смысла? - person Saher Ahwal; 28.07.2011
comment
@Saher Потому что наличие R-файла другого пакета в вашем классе определенно все испортит. - person Octavian A. Damiean; 28.07.2011

После целого дня попыток выяснить, почему не был сгенерирован R-файл, я обнаружил, что после установки Android SDK Tools r22 появилась новая опция в Tools: Android SDK Build Tools.

После установки снова был сгенерирован R-файл.

person Miguel Febres    schedule 21.05.2013
comment
Это помогло. Спасибо. - person ademers; 22.05.2013
comment
Я ищу этот новый вариант, где его найти? - person Larry McKenzie; 22.05.2013
comment
Щелкните правой кнопкой мыши проект ›Инструменты Android› Run Lint: Common Errors - person amar; 23.05.2013
comment
Наконец, я решил эту проблему, обновив Android SDK Tools и перезапустив eclipse, большое спасибо - person Arnaldo Ignacio Gaspar Véjar; 24.05.2013
comment
Спасибо! Почему они всегда должны ломать вещи ??? - person marzapower; 27.05.2013
comment
Это действительно сработало, большое спасибо. - person Linson; 28.05.2013
comment
Спасибо .. Это сработало, ты спас мне день. - person Ankit; 31.05.2013
comment
Ага, здесь то же самое. Еще одно спасибо. Я думал, что я уже прошел через этот процесс, но он, должно быть, был прерван, когда я закрывал eclipse во время загрузки, и он так и не закончился. - person Jay Snayder; 31.05.2013
comment
+1 это работает, но убедитесь, что в проекте нет других ошибок - person avasal; 08.09.2014

теперь вы импортировали android.R вместо своего собственного R ... Попробуйте взглянуть на ваше представление "проблем", если у вас есть ошибки в одном из ваших xml-файлов ... избавьтесь от import android.R и закомментируйте все случаи использования R. *

Очистка должна помочь, когда в вашем проекте нет других ошибок, поэтому проверьте свои xml-файлы или имена файлов в папках res.

person WarrenFaith    schedule 03.11.2010
comment
Когда я удаляю import android.R, в представлении Проблемы появляются две ошибки. Они R cannot be resolved to a variable в Notepadv2.java и error: Error: String types not allowed (at 'layout_height' with value 'match_parent') в note_edit.xml - person Jonas; 03.11.2010
comment
Что ж, если ваша целевая сборка 2.1, тогда match_parent не будет доступен, так как он был добавлен в Android 2.2. - person Octavian A. Damiean; 03.11.2010
comment
@Octavian: А, значит, XML не удалось проанализировать, поэтому R.java не создается. Теперь, когда я меняю цель сборки на Android 2.2, похоже, это работает. Вы можете добавить это к своему ответу. - person Jonas; 03.11.2010

Возможно, вы используете неправильную версию SDK. Щелкните правой кнопкой мыши свой проект. Выберите Свойства -> Android. Обратите внимание, что 2.2 - это последний SDK. Проверьте его и посмотрите, будет ли он скомпилирован ...

Редактировать

Также сделайте чистку после этого

person DeRagan    schedule 03.11.2010
comment
В Properties > Android я могу выбрать только Build target, и это Android 2.1, который мне нужен. В том же диалоговом окне также есть пустой раздел библиотеки. - person Jonas; 03.11.2010
comment
Да, в цели сборки вы должны были выбрать 2.2, и да, вы действительно использовали неправильную версию SDK :) - person DeRagan; 03.11.2010

I Had a similar problem

Лучший способ определить эту проблему - определить предупреждения о линтах :: * Щелкните правой кнопкой мыши project> Android Tools> Run Lint: Common Errors *

  • Это помогает нам показать некоторые ошибки, с помощью которых мы можем исправить то, что заставляет R.java снова регенерировать.
  • Следуя вышеуказанным шагам, я обнаружил, что добавил несколько файлов изображений, которые не использовал -> Я удалил их -> Это устранило проблему!

Наконец-то очистите проект!

person Devrath    schedule 09.08.2013

У моего коллеги есть эта проблема - перезапуск eclipse устранил ее.

person Bozho    schedule 03.11.2010

Обновите Android SDK Tools в Android SDK Manager до версии 22.0.1. У меня это сработало.

person Hugo Pinto    schedule 29.05.2013

  1. Удалите из кода строку import R.java. Это делает Eclipse для решения проблемы.
  2. Перейдите в файл «note_edit.xml». Где бы вы ни встретили «match_parent» в качестве значения атрибута, замените его на «fill_parent» или «wrap_content».
  3. Сделайте чистую сборку. R.java будет сгенерирован автоматически.

Если у вас возникла эта проблема, это означает, что свойство match_parent не поддерживается в вашем контенте. Вместо этого используется fill_parent.

"fill_parent: представление должно быть такого же размера, как и его родительский (без заполнения). Эта константа устарела, начиная с уровня API 8 и заменена на match_parent."

person Varun Singh    schedule 20.12.2010

Вы установили плагин для Android?

Ваш проект должен быть типа android.

person ykatchou    schedule 03.11.2010
comment
Это было близко к проблеме, с которой я столкнулся - я думаю, что как-то мне не хватало чего-то в разделе buildSpec моего файла .project. Не знаю, как это получилось, или как это исправить, но я в основном копирую / вставляю из рабочего проекта и снова строю R.java. - person parkerfath; 07.08.2012

На самом деле это ошибка в коде руководств. У меня была такая же проблема, и я наконец понял, что проблема была в файле «note_edit.xml».

Некоторые из атрибутов layout_heigh / width были установлены на match_parent, что не является допустимым значением, они должны быть установлены на fill_parent.

Это вызывало ошибку, которая приводила к сбою генерации файла R.java. Итак, если у вас возникла эта или аналогичная проблема, проверьте все свои XML-файлы и убедитесь, что ни в одном из них нет ошибок.

person Charleston    schedule 23.05.2011

У меня просто возникла проблема, когда ранее работавший проект перестал работать, и все, что ссылалось на R, было отправлено как ошибка, потому что R.java не создавался.

** * ПРОВЕРЬТЕ ВИД КОНСОЛИ * *

Я (с помощью Finder) сделал резервную копию основного значка (даже не использованного), поэтому одна из папок res (hdpi) имела

icon.png копия icon.png

Консоль указала, что «копия icon.png» не является допустимым именем файла. Больше нигде ошибок не отмечалось - красного X в папках res ....

но заменив пробелы на "_", все вернется в норму ....

person Dave Appleton    schedule 08.08.2012

Я сталкивался с этой проблемой много раз. Основная проблема в том, что

  1. Целевая версия sdk не выбрана в настройках проекта

or

  1. Файл default.properties (рядом с manifest.xml) либо отсутствует, либо не установлен минимальный уровень sdk.

Отметьте эти два и выполните чистую сборку, как было предложено в предыдущих вариантах, все должно работать нормально.

Проверьте наличие ошибок во вкладке «Проблемы» или «Консоль».

И наконец: есть ли у вас / eclipse права на запись в папку проекта? (также менее вероятный - дисковое пространство)

person srinathhs    schedule 03.11.2010
comment
Цель проекта установлена, но я не знаю о минимальном уровне SDK. Где я могу посмотреть, настроен ли он? В default.properties у меня только target=android-7 - person Jonas; 03.11.2010
comment
@Jonas: это означает, что целевая сборка установлена ​​на Android 2.1. - person Octavian A. Damiean; 03.11.2010
comment
В манифесте также есть атрибут ‹uses-sdk android: minSdkVersion = 8 /›. Вы видели какие-либо ошибки на вкладке «Проблемы» или в консоли? - person srinathhs; 03.11.2010
comment
Да, см. Мой комментарий к WarrenFaith - person Jonas; 03.11.2010

У меня также были такие проблемы, как отсутствие R.java, а также eclipse, жалующийся на ошибки в моем коде (отображение красного значка X напротив файлов классов), когда ошибок не было.

Единственный метод, который я нашел для решения этой проблемы, - это очистить проект, выбрав Project > Clean

Кажется, это решило проблему для меня, запустив Eclipse 3.5.2.

person Jimmy    schedule 03.11.2010

да, у меня такая же проблема. Я исправил ее, выбрав «Проект» на панели инструментов. Очистить проект также сбросить автоматическую настройку сборки. Несколько раз необходимо было изменить имя формата соответствия файла xml. [az] [0-9] заглавные буквы должны быть измененный

person Dev.Sinto    schedule 03.11.2010
comment
Я не знаю, новая ли это функция, но в моих файлах макета есть подчеркивание в своем имени, и все работает нормально. - person sjngm; 28.01.2014

Кажется, что когда вы переходите на последнюю версию SDK (2.2), сборка больше не создает файл R.java. Или, по крайней мере, не так, как мы привыкли. Чтобы решить эту проблему, удалите пакет под папкой gen и очистите без сборки. Это решает проблему для меня.

person zkwentz    schedule 24.11.2010

У меня эта проблема из-за какой-то внутренней ошибки в плагине Android. Когда я попытался открыть какой-нибудь макет xml, у меня возникла ошибка:

The project target (Android 2.2) was not properly loaded.

К счастью, в моем случае перезапуск Eclipse и очистка проекта помогли.

person Danubian Sailor    schedule 02.03.2012

Это также может быть проблемой, например, неправильного файла макета xml. Если ваши XML-файлы недействительны (содержат ошибки), R-файл не будет повторно сгенерирован после очистки. Если вы исправите это, R-файл будет снова сгенерирован автоматически.

person Steffen Brem    schedule 10.01.2013

По своему опыту могу резюмировать:

1. Проблема в основном связана с проблемами синтаксиса, которые могут возникать в файлах xml.

2. Вы можете случайно скопировать AndroidManifest.xml во вложенные папки.

1. Один файл имеет неопределенное расширение.

После того, как вы отметите все это, перейдите в Project-> Clean или просто удалите папки / bin и / gen.

person ENSATE    schedule 10.05.2013

Просто перезапустите, Eclipse решит эту проблему, так как рабочая область будет только что созданной! перейти к

Файл -> Перезагрузить

Это самый простой способ избежать разочарования, зайдя в Build, properties, бла-бла ...

person Vivek Warde    schedule 27.12.2013
comment
Если это не может решить эту проблему, можно рассмотреть другие ответы! - person Vivek Warde; 27.12.2013

Вот еще один: я чуть не заплакал, но сумел вернуть свою любимую R.java:

Я довольно давно ничего не обновлял в своей установке Android. Мне нужна была функция, и я запустил SDK Manager. Помимо того, что мне было нужно, я в основном проверил все, что хотел обновить. После этого мой R.java исчез в Eclipse.

Короче говоря, в SDK Manager появилась новая запись «Android SDK Build-tools», которой, как мне кажется, не было при последнем обновлении. Это вроде как очевидное имя, правда. После того, как я установил его, Eclipse вернул мне мой R.java.

person sjngm    schedule 28.01.2014

java .... чем отладка .. или Удалите строку 'import R.java' из вашего кода. Это делает Eclipse для решения проблемы. Перейдите в файл «note_edit.xml». Где бы вы ни встретили «match_parent» в качестве значения атрибута, замените его на «fill_parent» или «wrap_content». Сделайте чистую сборку. R.java будет сгенерирован автоматически

person andrew chaple    schedule 16.06.2011