我的项目中没有生成 R.java 文件[重复]
Posted
技术标签:
【中文标题】我的项目中没有生成 R.java 文件[重复]【英文标题】:No generated R.java file in my project [duplicate] 【发布时间】:2011-05-04 09:53:19 【问题描述】:我正在做Notepad tutorial, exercise 2。我首先创建了一个新的 android 项目,然后选择从源代码创建来导入下载的源文件以进行练习。
但是现在我在 Eclipse 中遇到很多错误,问题是没有生成 R.java
类。我该如何解决这个问题?文件夹gen/
为空。
我在Notepadv2.java
和res/layout/note_edit.xml
上有错误,两者似乎都与生成的R.java
丢失有关。
这是我在Notepadv2.java
中的import
声明:
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 创建的。
【问题讨论】:
对于那些仍然遇到 Eclipse 无法更新/生成 R.java 问题的人。一种可能的解决方案是创建一个虚拟 xml,然后删除该 xml。就我而言,这是解决方案 从字面上看,整天都在努力寻找答案……对于 appcombat 和您的项目。转到 properties > Android 并将 Project Built Target 更改为 API level 21。 【参考方案1】:转到Project
并点击Clean
。除其他外,这应该会重新生成您的 R.java 文件。
同时删除任何 import android.R.*
语句,然后进行我提到的清理。
显然 Jonas 问题与不正确的目标构建设置有关。他的目标构建设置为 Android 2.1 (SDK v7),其中他的布局 XML 使用 Android 2.2 (SDK v8) 元素(布局参数match_parent
),因为那里Eclipse 无法正确生成导致所有问题的 R.java 文件。
【讨论】:
@Jonas:请发布您的导入。 @Jonas:完全正确。主应用程序的导入部分。 当我将构建目标从Android 2.1
更改为Android 2.2
时,会生成R.java
。但是当我改回Android 2.1
并且在我改回Project>Clean
之后,R.java
会再次被删除。
@Jonas:不要更改目标构建。你试过我提到的吗?
@Saher 因为在你的班级中拥有另一个包的 R 文件肯定会搞砸一切。【参考方案2】:
一整天试图找出为什么没有生成 R 文件后,我发现在安装 Android SDK Tools r22 后,工具中有一个新选项可用:Android SDK Build Tools。
安装后再次生成R文件。
【讨论】:
成功了。谢谢。 我正在寻找这个新选项,在哪里可以找到它? 右键项目>Android工具>运行Lint:常见错误 我终于解决了这个问题,更新Android SDK工具并重启eclipse,非常感谢 谢谢!为什么他们总是要打破东西???【参考方案3】:现在您已导入 android.R
而不是您自己的 R...如果您的某个 xml 文件中有错误,请尝试查看您的“问题”视图...摆脱 import android.R
和注释掉 R.*
当您的项目没有其他错误时,清理应该会有所帮助,因此请检查您的 res 文件夹中的 xml 文件或文件命名
【讨论】:
当我删除import android.R
我在 Problems 视图中有两个错误。它们是R cannot be resolved to a variable
in Notepadv2.java
和 error: Error: String types not allowed (at 'layout_height' with value 'match_parent')
in note_edit.xml
如果您的目标版本是 2.1,那么 match_parent
将不可用,因为它是在 Android 2.2 中添加的。
@Octavian:啊,所以XML解析失败,所以没有生成R.java
。现在,当我将构建目标更改为 Android 2.2
时,它似乎可以工作。您可以将其添加到您的答案中。【参考方案4】:
您可能使用了不正确的 SDK 版本。右键单击您的项目。选择属性-->Android。请注意,2.2 是最新的 SDK。检查它,看看它是否被编译...
编辑
之后也要进行清洁
【讨论】:
在Properties > Android
中我只能选择Build target
,而我想要的是Android 2.1
。在同一个对话框中还有一个空的库部分。
是的,在构建目标中,您应该选择 2.2,是的,您确实使用了不正确的 SDK 版本 :)【参考方案5】:
I Had a similar problem
识别此问题的最佳方法是识别 Lint 警告::
*右键点击project
> Android Tools
> Run Lint
: Common Errors
*
终于清理项目了!
【讨论】:
【参考方案6】:我的同事有这个问题 - 重启 eclipse 解决了它。
【讨论】:
【参考方案7】:在 Android SDK 管理器中更新 Android SDK 工具以获取 22.0.1 版。 它对我有用。
【讨论】:
【参考方案8】:-
从您的代码中删除“import R.java”行。它由 Eclipse 完成以解决问题。
转到“note_edit.xml”文件。无论您在何处找到“match_parent”作为属性值,都将其替换为“fill_parent”或“wrap_content”。
进行干净的构建。 R.java 会自动生成。
如果您遇到此问题,则表示您的内容不支持“match_parent”属性。而是使用“fill_parent”。
"fill_parent:视图应该与其父级一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并替换为 match_parent。"
【讨论】:
【参考方案9】:你安装了安卓插件吗?
你的项目必须是android类型的。
【讨论】:
这与我遇到的问题很接近——我想我在 .project 文件的 buildSpec 部分中遗漏了一些东西。不知道它是怎么做到的,或者修复它的正确方法,但我基本上从一个工作项目中复制/粘贴,然后再次构建 R.java。【参考方案10】:这实际上是教程代码中的一个错误。我遇到了同样的问题,我终于意识到问题出在“note_edit.xml”文件中。
一些 layout_heigh/width 属性被设置为“match_parent”,这不是一个有效值,它们应该被设置为“fill_parent”。
这引发了一个错误,导致 R.java 文件的生成失败。因此,如果您遇到此问题或类似问题,请检查您的所有 xml 文件并确保它们都没有任何错误。
【讨论】:
【参考方案11】:我刚刚遇到一个问题,以前工作的项目停止工作,因为没有生成 R.java,所以引用 R 的所有内容都被发布为错误。
** * 检查控制台视图 **
我(使用查找器)备份了主图标(甚至没有使用) 所以其中一个 res 文件夹 (hdpi) 有
图标.png icon.png 的副本
控制台指出“icon.png 的副本”不是有效的文件名。 其他任何地方都没有标记错误 - res 文件夹中没有红色 X....
但是用“_”替换空格,一切都恢复正常了......
【讨论】:
【参考方案12】:我多次遇到这个问题。根本问题是
-
项目设置中没有选择目标sdk版本
或
-
文件 default.properties(在 manifest.xml 旁边)丢失或未设置最低 sdk 级别。
检查这两个并按照之前选项中的建议进行干净的构建,它应该可以正常工作。
检查“问题”或“控制台”选项卡中的错误。
最后:你有/eclipse对项目文件夹有写权限吗? (也不太可能是磁盘空间)
【讨论】:
项目目标已设置,但我不知道“min sdk level”。我在哪里可以看到它是否已设置?在default.properties
我只有target=android-7
@Jonas:这意味着目标构建设置为 Android 2.1。
manifest中还有一个属性我也遇到过 R.java
丢失等问题,当没有错误时,eclipse 抱怨我的代码中有错误(对类文件显示红色 X 图标)。
我发现解决此问题的唯一方法是通过选择 Project > Clean
来清理项目
这似乎解决了我自己的问题,运行 Eclipse 3.5.2
【讨论】:
【参考方案14】:是的,我也有同样的问题。我通过以下方式修复了它 从工具栏中选择项目清理项目 还重置构建自动选项 有时需要更改 xml 文件匹配格式的名称 [a-z][0-9] 必须更改大写字母
【讨论】:
我不知道这是否是一个新功能,但我的布局文件的名称中有一个下划线,一切正常。【参考方案15】:似乎当您更改为最新的 SDK (2.2) 时,构建不再生成 R.java 文件。或者至少不是我们习惯的方式。要解决此问题,请删除 gen 文件夹下的包并在不构建的情况下进行清理。这为我解决了这个问题。
【讨论】:
【参考方案16】:由于 Android 插件中的一些内部错误,我遇到了这个问题。当我尝试打开一些布局 xml 时,出现错误:
The project target (Android 2.2) was not properly loaded.
幸运的是,在我的情况下,重新启动 Eclipse 并清理项目有所帮助。
【讨论】:
【参考方案17】:这也可能是例如不正确的 xml 布局文件的问题。如果您的 xml 文件无效(包含错误),R 文件将不会在清理后重新生成。如果你解决了这个问题,R文件将再次自动生成。
【讨论】:
【参考方案18】:根据我的经验,我可以总结一下:
1.问题主要是指语法问题,可以 发生在 xml 文件上。
2.您可能会不小心将 AndroidManifest.xml 复制到子文件夹中。
1.一个文件是未定义的扩展名。
检查所有这些后转到项目->清理或删除 /bin 和 /gen 文件夹。
【讨论】:
【参考方案19】:只需重新启动 Eclipse 将解决此问题,因为工作区将重新构建!去
文件 -> 重启
这是避免挫败感的最简单方法,方法是进入 Build、properties、blah blah.....
【讨论】:
如果这不能解决这个问题,那么可以考虑其他答案!【参考方案20】:还有一个:我快要哭了,却把我心爱的R.java
找回来了:
我已经有一段时间没有更新我的 Android 安装中的任何内容了。我需要一个功能并运行 SDK 管理器。除了我需要的东西,我基本上检查了它想要更新的所有东西。之后我的R.java
在 Eclipse 中消失了。
简而言之,在 SDK 管理器中有一个新条目“Android SDK Build-tools”,我猜我上次更新时并不存在。这是一个明显的名字,真的。在我安装了那个 Eclipse 之后,我把我的 R.java
还给了我。
【讨论】:
【参考方案21】:java ....比调试.. 要么 从代码中删除“import R.java”行。它由 Eclipse 完成以解决问题。 转到“note_edit.xml”文件。无论您在何处找到“match_parent”作为属性值,都将其替换为“fill_parent”或“wrap_content”。 做一个干净的构建。 R.java 会自动生成
【讨论】:
以上是关于我的项目中没有生成 R.java 文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Android ADT 版本 22,未生成 R.java 文件