R.Java未生成。

9

我已经从Google Codes下载了代码,但当我将该项目导入我的Eclipse IDE时,它没有生成R.Java文件。我查阅了许多博客和论坛,并尝试了许多方法,如清理、重建、从现有源创建项目等,但仍然遇到问题。一些人提到这有时是由于SVN客户端软件引起的,但他们没有提到任何解决方案。如果您自己下载并找到确切的问题,我将不胜感激。


你尝试过删除“gen”文件夹吗? - vanleeuwenbram
1
根本就没有“gen”文件夹。 - Waseem
有任何更新吗?问题解决了吗? - owen gerig
即使您没有R.java文件或构建失败,也请运行项目。将会创建一个新的R.java。 - Pramod
11个回答

16

一般来说,要使其正常工作:

  1. 将项目导入到 Eclipse 中(文件 -> 导入 -> 通用 -> 现有项目到工作区)
  2. 在 Eclipse 中手动创建 gen 文件夹并将其添加为源文件夹(右键单击您的项目,生成路径 -> 配置生成路径 -> 添加文件夹)
  3. 清理您的项目,应该会生成 R.java 文件

但是它没有生成,为什么?

因为在 res 文件夹中的 xml 文件存在一些编译错误(或者说 bug),所以没有生成 R.java 文件(我在我的 Mac 上进行了测试):
在 res/values/styles.xml 文件中注释掉以下内容:

<style name="iWindowTitleBackground" parent="android:WindowTitleBackground">    
  <item name="android:background">@drawable/title_bar</item>        
</style>

在res/values/themes.xml文件中,将以下内容注释掉:

<item name="android:windowTitleBackgroundStyle">@style/iWindowTitleBackground</item>

然后进行 项目 -> 清理,您应该会生成 R.java。

有一个错误报告称,在某些操作系统中无法解析 parent="android:WindowTitleBackground",更多详细信息请查看这里


5
我忘了这一点,如果有错误,它就不会生成。整个R.java的问题让我很烦恼,当我处理它时,这是一个愚蠢的问题。这并不是开发者的错,只是SDK中的一个错误 :( - owen gerig
谢谢。我没有完全相同的XML内容,但是清理它们仍然起作用了。 - bad_keypoints

3
每当你的生成的R类没有被生成时,这表示由于XML资源的某些解析问题而无法生成它。检查IDE中的错误控制台以找出具体的问题。
常见问题包括:
- 在您的strings.xml中存在未转义的字符,例如you're而不是you\'re - 布局资源中缺少layout_width或layout_height标签 - 缺少命名空间声明 - 变量名称不受Java支持,例如由于大写字母或使用空格、连字符或其他不支持的字符 - XML中的任何其他类型的语法错误 - 检查“Console”以获取问题(图像附有控制台,在其中定义了为什么在您的项目中未生成R的问题)

1
当我遇到这个问题时,我会删除gen文件夹,然后它将重新创建所有的r文件。

这就是我之前说的。所以当你使用findById并开始输入r.id时,你会看到android.r和r。而你的项目文件在第二个变量R中。只做参考。 - owen gerig

1

你会在文件顶部看到 import android.r 或者 r.java(我忘了)这行代码。你需要删除这行代码,清理项目并重新运行。
基本上,Android 使用 R 来引用项目中的项。但是当导入语句存在时,它会覆盖查找你的项目目录,并使用 Android 的目录。


1

在检查所有资源没有错误、清理、重建、重新启动等操作后,我仍然遇到了这个错误。

我通过过滤项目中的SVN文件来解决这个问题。

如何在Eclipse中排除.svn目录的搜索?

虽然问题提到了搜索,但解决方案也适用于编译时使用的文件。

重新启动后,一切正常。


1
"

请确保“.xml文件”和“图像文件”的名称为小写字母。

"

1

我在尝试构建从code.google.com(这里)下载的wiktionary示例代码时遇到了相同的问题。我已经将其导入到一个新的Eclipse Juno项目中,该项目设置为使用Android 4.1和JDK 1.6。

以下是构建项目后控制台的摘录:

W/ResourceType( 6292): Bad XML block: header size 103 or total size 0 is larger than data size 0 C:\Development\WorkJava\android\sampleapps\Wiktionary\com.example.android.wiktionary.LookupActivity\res\values\strings.xml:23: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute? C:\Development\WorkJava\android\sampleapps\Wiktionary\com.example.android.wiktionary.LookupActivity\res\values\strings.xml:23: error: Unexpected end tag string

以下是res/values/string.xml的摘录:

<resources>

<string name="app_name">Wiktionary Word of the Day</string>
<string name="app_descrip">A fast Wiktionary browser and Word-of-day widget</string>
<string name="app_credits">"All dictionary content provided by Wiktionary under a GFDL license.  http://en.wiktionary.org\n\nIcon derived from Tango Desktop Project under a public domain license.  http://tango.freedesktop.org".</string>
<string name="template_user_agent">"%s/%s (Linux; Android)"</string>
<string name="template_wotd_title">"Wiktionary:Word of the day/%s %s"</string>
<string name="template_wotd_archive_title">"Wiktionary:Word_of_the_day/Archive/%s/%s"</string>

解决方案

在包含两个%s替换符的最后3个字符串定义中添加formatted="false",如下所示,可以解决问题。 重新构建项目将在gen文件夹中生成R.java。

<resources>

<string name="app_name">Wiktionary Word of the Day</string>
<string name="app_descrip">A fast Wiktionary browser and Word-of-day widget</string>
<string name="app_credits">"All dictionary content provided by Wiktionary under a GFDL license.  http://en.wiktionary.org\n\nIcon derived from Tango Desktop Project under a public domain license.  http://tango.freedesktop.org".</string>
<string name="template_user_agent" formatted="false">"%s/%s (Linux; Android)"</string>
<string name="template_wotd_title" formatted="false">"Wiktionary:Word of the day/%s %s"</string>
<string name="template_wotd_archive_title" formatted="false">"Wiktionary:Word_of_the_day/Archive/%s/%s"</string>

0

我多次遇到了这个问题。经验之谈是要检查你的 .xml 文件。
强调:当 .xml 文件出现问题时,R.java 文件不会被生成。


0

将工作区更改为新目录,并设置其权限,以便所有人都可以使用它。


0
在我的情况下,我发现在res/drawable目录下有一个包含大写字母的图片文件名。更改了图片名称后,问题得到解决,我可以构建项目了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接