【问题标题】:R.java disappears after project clean项目清理后 R.java 消失
【发布时间】:2011-04-23 05:12:23
【问题描述】:

在我将一些 .png 文件添加到我的 Project Workspace 可绘制文件夹中后,我在 Eclipse 中刷新了我的可绘制文件夹并显示了新添加的文件。但是当我尝试使用 R.drawable.xyzimage 访问这些资源时,虽然文件夹中的 xyzimage 无法解析。

所以我做了一个 Project Clean 并猜测在这个干净的 R.java 完全消失之后,我所有使用 R.java 访问资源的类都显示出各种错误,Eclipse 将不再让我运行代码。

我有源代码的备份,但我想探索是否可以重新生成 R.java 以及如何重新生成?

感谢大家的帮助。

【问题讨论】:

  • 您使用的是哪个版本的 Eclipse?
  • 不仅你用的是哪个eclipse版本,还有你用的是什么ADT插件版本?
  • Eclipse 3.5.2 / Android 开发工具包 0.9.8

标签: android eclipse


【解决方案1】:

尝试在项目中编辑一行代码,然后再次构建项目。

【讨论】:

  • 如何构建?如果你给我日食导航,那就太好了。谢谢
  • 我刚刚尝试了 Project -> Build and Build All。这些选项没有激活,因为我检查了自动生成。但它并没有解决 R.java 的问题
【解决方案2】:

您应该在项目中检查的几件事:

  • 检查 Eclipse IDE 中的问题选项卡。您确定在使用可绘制对象进行更改时没有引入构建问题吗?要检查您是否需要检查受影响布局的 xml 源并查看是否有东西标记为红色。

  • 在文件资源管理器中,转到您的 Android 项目所在的目录。检查您是否有文件 default.properties(.classpath、.project 和 AndroidManifest.xml 应该在那里)。如果 default.properties 丢失,它可以很容易地被正确的版本替换。

  • 您使用的是哪个 Android 版本?如果是 1.5 或更低版本,请确保在 res 目录中有名为 drawable 的目录,而不是 drawable-hdpidrawable- mdpidrawable-ldpi。最后三个适用于 1.6 及更高版本。

  • 在 Eclipse 的包资源管理器中右键单击您的项目。您将获得多种选择。转到 Android 工具-> 修复项目属性,看看是否有帮助。

【讨论】:

    【解决方案3】:

    在 Eclipse 中尝试 Project->Clean。以我有限的经验,如果没有自动创建 R.java,那么您的 xml 中的某处会出现错误。三重检查一切。

    【讨论】:

    • 这是非常正确的。此外, res 文件夹或任何其他文件夹中的任何内容都应遵循命名约定。
    • 是的,在其中一个 xml 布局文件中有些东西
    • 从 xml 布局中删除了一些变量。所以R.java 中的引用没有引用到 xml 文件中的任何变量(可以是 layout/activity_main.xmlvalue/string.xml
    • XML 错误。其他所有问题都在说干净,但答案是不要再做笨蛋并修复您的 xml 错误。
    • 我在我的 xml 文件中看不到任何错误。如何解决这个问题?
    【解决方案4】:

    另一件事:永远不要尝试在使用 xml 文件打开的文本编辑器的情况下运行应用程序。这将创建一个奇怪的运行配置,只能通过项目清理来修复,有时会使 xml 文件消失(我已经发生了两次)。

    【讨论】:

      【解决方案5】:

      您必须构建项目才能使用新添加的资源。

      清理项目会删除所有自动生成的文件。构建项目它应该自动创建它们。清理项目时,可以选择在清理后立即开始构建。

      您可以尝试以下几件事(在手动删除“gen”目录后执行相同的步骤。

      • 删除 gen 目录后,转到 Project > Clean ...
      • 您应该有错误表明 R 无法解析为变量。在 Package Explorer 中右键单击您的项目,然后选择 Build Project。确保 Build Automatically 选项已关闭(取消选中 Project > Build Automatically)。
      • 关于 R 的错误现在应该已经消失了。现在,再次执行项目清理。所有错误都应该消失。

      让我知道这是否适合你。

      【讨论】:

      • 已删除 gen。建成的项目。 gen 文件夹回来了,但不是 R.java
      【解决方案6】:

      这就是问题所在。我将这些新的 png 图像添加到项目中,android 有关于这些图像名称中允许使用哪些字符的规则。一旦我更改了图像名称中的大写字母,它又回到了正轨,Build Automatically 生成了 R.java 文件,所有错误都消失了。 Eclipse 控制台是我发现与我的资源相关的所有错误的地方。

      谢谢各位....我尝试了您的解决方案,但我的错误是由于我的图像命名约定造成的,所以这是我修复它的方式。

      【讨论】:

        【解决方案7】:

        我的 res/drawable 文件夹中有一个无效的 jpg。我删除了 jpg 并且它起作用了。

        【讨论】:

        • 我这边同样的错误!在我的 Mac 上创建了一个图像的副本,它在该文件夹中为“image copy.png”。花了将近一个小时才找到它!
        【解决方案8】:

        如果我将项目移动到新位置,就会发生这种情况。我发现上面的答案并没有解决我的问题,但是创建一个新项目并导入源代码可以解决。

        【讨论】:

          【解决方案9】:

          我同意这通常是一个 XML 问题,但此外,问题出在您的 res 文件夹中,并且可能会在清理尝试后用红色叉号突出显示。

          我刚刚遇到这个问题,这是因为我在 res 文件夹中创建了自己的名为“data”的文件夹。清洁后,它有一个小红叉。我删除了这个文件夹并重新构建了 R。

          问候, 标记

          【讨论】:

            【解决方案10】:

            我的 Mac 也遇到了这个问题,我认为所有 Mac 用户都知道我是如何解决这个错误的。

            我有一个 .DSStore 文件自动导入到我的 res 目录中的项目中,当我删除它并重建项目时一切顺利。

            【讨论】:

              【解决方案11】:

              检查您在drawable文件夹中的文件,确保所有文件都是资源文件(图像)删除不需要的文件,如thumb.db。删除所有文件并再次检查

              【讨论】:

                【解决方案12】:

                在一次又一次地进行大量清洁和建设项目后,我遇到了同样的问题。我发现在控制台上有这个错误:

                res/drawable-hdpi/Blue Blank.png: Invalid file name: must contain only [a-z0-9_.]
                

                这并没有在 xml 中显示为错误。我更改了名称并保存文件,清理项目并构建。现在它正在工作。我的建议是检查你的 res 文件夹和你在其中使用的文件的名称,并且只命名[a-z0-9_.]

                删除xml中的相关标签,保存xml,清理项目,构建项目。现在再次将该资源放入 xml 并保存!

                【讨论】:

                  【解决方案13】:

                  我在 Eclipse 中执行 Project->clean 后,我所有的 R.* 文件都停止工作了。问题是我备份了一个XML 文件,该文件附加到布局目录中的一个活动。这会导致我项目的每个活动都出错。

                  删除文件后,我的Activities 之一中仍然存在R 错误,并且只有在我尝试导入不同的文件然后删除它们后才解决。实际上,我对以前的导入没有任何更改,但出于某种原因将它们全部删除并重新粘贴它们修复了它。

                  【讨论】:

                    【解决方案14】:

                    确保您的 png 文件具有小写名称。这就是我一直扔掉的原因,因为我将第一个字母大写,或者我在命名中使用了不允许的非字母数字。在销毁任何代码之前检查一下。

                    【讨论】:

                    • 所有 res 文件只能包含这些字符 [a-z0-9_.]
                    【解决方案15】:

                    这可能很简单,但请检查以确保您没有使用

                    导入android.R;

                    【讨论】:

                      【解决方案16】:

                      只需检查您的图像文件夹(通常创建 res > 可绘制文件)并确保不要在 .png 文件上使用大写字母,每种类型都必须是小写字母,然后您可以在 gen 文件夹下再次找到您的 R.java

                      【讨论】:

                        【解决方案17】:

                        我删除了'import android.R;'然后注释掉有问题的行,然后构建,ok

                        然后我删除了评论并修复了它

                        【讨论】:

                          【解决方案18】:

                          我在清理项目时遇到了同样的问题。我疯狂地解决它,我搜索和搜索,但以我的方式解决了它。 首先,删除 /res 文件夹中所有不需要的文件。我有一些笔记,我把它们带到另一个我不参与的项目并手动构建项目。有效!试试这个,我相信它会有所帮助。

                          发展顺利!

                          【讨论】:

                            【解决方案19】:

                            每次清理项目并重新构建时,它都会导入

                            import.android.R

                            所以,删除此导入并从 xml 文件中删除所有错误。它会起作用的。

                            【讨论】:

                            • 这条评论应该在上面。非常感谢!
                            【解决方案20】:

                            是否生成了命名约定为“somthing.out.xml”的 XML 文件?如果是这样,您应该删除此文件(此名称的不需要的文件可能会导致您的 somthing.somthing.R 文件导入出现重大问题)。

                            在某些版本的 eclipse 中(我知道 eclipse javaEE 肯定会这样做),在查看 XML 文件的同时运行项目将在您的 res->layout 文件夹中创建一个名为 filename.out.xml 的文件。如果发生这种情况,您必须删除此生成的文件,否则您将无法获取要导入的 java.R 文件。

                            【讨论】:

                              【解决方案21】:

                              尝试项目 -> 选中自动构建

                              【讨论】:

                                【解决方案22】:

                                如果您使用的是 64 位 Ubuntu,请尝试安装 32 位库 (ia32-libs)

                                $ sudo apt-get install ia32-libs 
                                

                                对我有用

                                【讨论】:

                                  【解决方案23】:

                                  同样的事情也发生在我身上。巧合的是,那天我需要更新我的adk,所以我这样做了,并且在重新启动eclipse后它又可以工作了。我的建议是构建项目并重新启动 Eclipse。这不是由于您的代码中的任何错误。

                                  【讨论】:

                                    【解决方案24】:

                                    在简单地完成一个项目之后,我阅读并尝试了上述许多内容。 Eclipse 之后不会构建任何东西。

                                    幸运的是,我昨晚备份了工作区,并且我的源代码是从 VS 2010 复制过来的。

                                    不用再打扫了!

                                    【讨论】:

                                      【解决方案25】:

                                      例如,如果您添加带有大写字母的外部资源文件 “Hello.png 或 WelcomeSound.mp3 等”,例如如果您添加大写字母并清理您的项目,您肯定会丢失您的 R.java 文件。因此,如果您已经丢失了它,请在外部重命名文件,然后清理您的项目,或者右键单击项目 Refractor->Rename,然后用小写字母重命名您的文件。接下来,删除项目资源管理器中的“gen”文件夹,现在右键单击“构建项目”。如果 Build Project 选项灰显,请转到 Project-> 取消选择“Build Automatically”选项。

                                      问候,

                                      Kshitij Thube

                                      【讨论】:

                                        【解决方案26】:

                                        在不删除源的情况下从工作区中删除您的项目,然后将其导入工作区。

                                        右键单击您的项目->删除/不要选择“删除磁盘上的项目内容(无法撤消)”/->确定

                                        File -> Import -> General -> Existing Projects into Workspace -> Brouse -> /寻找你的workspace(!)文件夹/ -> Ok -> /你清理过的项目将被自动检查/ -> Finish

                                        【讨论】:

                                          【解决方案27】:

                                          在例行清洁后,昨天我在 Eclipse Juno 上遇到了可怕的缺少 R 问题。 StackExchange 充满了建议,广泛的谷歌搜索只发现了常见的嫌疑人(XML 命名约定问题等),但似乎没有一个直接适用,尽管我肯定有可能遗漏了一些东西。

                                          可能的原因和修复的最佳摘要综合列表在这里:

                                          http://www.techrepublic.com/blog/software-engineer/a-comprehensive-troubleshooting-guide-for-androids-r-cannot-be-resolved-error/

                                          一个有用的提示是尝试在我的工作区中创建并运行一个简单的“Hello World”。如果没有运行,则安装程序已损坏。我的 Hello World 和我的自定义应用程序一样充满错误。

                                          对我有用的解决方案(也许是大材小用,但没有其他工作)是完全卸载 Android SDK 并删除 Eclipse (Juno),下载 Eclipse for Developers (Kepler) 并重新安装 Android ADT 插件和 ADK,然后使用重新创建我的 AVD选项中的最新“编译方式”版本。

                                          到目前为止一切都很好,尽管我正在从头开始重新创建应用程序。从这里开始,我会更加谨慎地使用 clean。

                                          【讨论】:

                                            【解决方案28】:

                                            我刚才也出现了同样的问题,我将 *demo.1.png 等无效的 png 文件重命名为 demo.png * 及其工作。

                                            【讨论】:

                                              【解决方案29】:

                                              有时这些错误会因 mdpi 和 xhdpi 的大小而异。所以您必须检查 mdpi 和 xhdpi 的图像大小。否则检查命名约定。

                                              【讨论】:

                                                【解决方案30】:

                                                验证成功的方法,检查文件(AndroidManifest.xml)并删除其中的所有cmets,并确保该文件中没有错误,我尝试过并与我一起工作。

                                                【讨论】:

                                                  猜你喜欢
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 2015-02-26
                                                  • 2015-02-02
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 2012-06-23
                                                  • 1970-01-01
                                                  相关资源
                                                  最近更新 更多