【问题标题】:IntelliJ Idea not generate id in R.javaIntelliJ Idea 不在 R.java 中生成 id
【发布时间】:2012-11-19 14:46:10
【问题描述】:

我最近切换到 IntelliJ Idea 12。

现在在android上创建了一个项目,马上遇到一个问题:not generated id in R.java

重建项目没有帮助。

也许在 IntelliJ Idea 中有什么我不知道的微妙之处?

错误:

12-01 16:08:15.067: ERROR/AndroidRuntime(7108): FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: String resource ID #0x1
at android.content.res.Resources.getText(Resources.java:266)
at android.widget.TextView.setText(TextView.java:3624)
at com.example.poem_new.MyActivity.invalidateCounters(MyActivity.java:41)
at com.example.poem_new.MyActivity.access$000(MyActivity.java:11)
at com.example.poem_new.MyActivity$1.onTextChanged(MyActivity.java:29)
at android.widget.TextView.sendOnTextChanged(TextView.java:8027)
at android.widget.TextView.handleTextChanged(TextView.java:8074)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8454)
at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:892)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:669)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:188)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:149)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:315)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4945)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

R.java 文件为空:

    /* This stub is for using by IDE only. It is NOT the R class actually packed into APK */
public final class R {
}

【问题讨论】:

  • 能否取消选中编译器选项部分中的“使用外部构建”
  • 我也有同样的问题。该项目在 Intellij 11 中构建良好,但在 12 中没有编译资源
  • 我也有同样的问题。我的解决方法是打开 Intellij 11 添加新的 android 库,构建它,然后返回并打开 12。之后它运行良好。似乎 Intellij 12 中存在添加依赖项的问题?
  • 我将我的项目设置为 Maven 构建。当 Intellij 无法重新生成 R.java 时,我只需进行 Maven 构建。顺便说一句,我很确定我在使用 11 时也遇到了这个问题,但是在我切换到 12 的同时才开始进行 Android 开发。

标签: java android compilation intellij-idea


【解决方案1】:

如果您的项目 java 编译器与您的 android java 编译器不同,则会出现此问题。更改项目设置并清理项目正在运行。 如果问题没有解决然后转到项目属性-> android -> 选择任何 android 版本 然后编译

【讨论】:

  • 如何在 IntelliJ Idea 中清理项目?
  • 转到项目菜单选项选择清理并选择您的项目或所有项目项目->清理->单个/全部
  • 可能是 IntelliJ IDEA 项目的结构?我找不到“项目菜单”
  • 为什么在 Eclipse 中?我的 IntelliJ Idea 有问题。
  • 在 Idea 中是 Build->Rebuild。尝试重新生成 R 文件并确保它在没有警告和错误的情况下生成:有一次,当我在 XML 中遇到错误时,我遇到了类似的错误,而想法只是默默地生成了空的 R.java
【解决方案2】:

在您使用“R.id”的 cmets 中创建代码行,然后运行您的项目。

然后下次删除 cmets 并再次运行它。

希望它会起作用

【讨论】:

  • 为什么这必须帮助我?这不是解决办法。
【解决方案3】:

您观察到的可能是想法 12 中的设计行为:

http://youtrack.jetbrains.com/issue/IDEA-99045

“这是 IDEA 12 的行为,它不会在 gen 文件夹中生成完整的 R.java,它会在编译期间在 IDEA 的系统目录中生成它。”

在你的情况下,查看~/.IntelliJIdea12\system\compiler\YOUR_PROJECT_NAME.RANDOM_STRING\.generated\aapt\YOUR_PROJECT_NAME.RANDOM_STRING\production\package\R.java

此文件应该是最新的,并且应该包含您期望的所有 ID。

它还应该通过某种内部的 Idea 魔术连接到 Idea 的自动完成、使用搜索等功能。

空的 R.java 是正常的(尽管具有误导性,Jetbrains 打算改变这种行为)。

【讨论】:

  • 仅供参考,我在 ~./IdeaIC12/system/compile-server/PROJECT_NAME_STRING/android/generated_sources/APP_NAME/aapt/com/packagename/R.java 中找到了我的 R.java!
  • 谢谢!发现这个让我发疯了。这是一个绝对糟糕的系统,因为某些错误非常依赖于查找 R id。
【解决方案4】:

我遇到了同样的问题。厌倦了 Eclipse,我决定尝试一个新的 IDE。 我为 Android 创建了一个新项目,并在一个新模块中创建了一个新的模块(试图让开始 Android 示例编译和运行)。当我创建一个新模块时,它创建了您期望的常用目录,包括 gen.我复制了源文件、清单和 res 目录。 遇到这个问题,IDEA 无法弄清楚 R. 是什么。我做了以下事情:

  • 删除 android.R 的导入
  • 删除gen目录

在重新出现清晰的构建生成后,项目正常。

它对某人有帮助。

【讨论】:

    【解决方案5】:

    关闭所有intellij窗口,重命名项目文件夹并再次打开它解决了我的问题。

    更新:

    Intellij 倾向于将生成的文件保存在用户文档中自己的文件夹中。所以这种情况的另一种方法是使缓存文件无效。转到文件菜单并选择无效缓存,然后intellij将重新启动并重新生成缓存和其他所需文件,一切都会好起来的!

    【讨论】:

      【解决方案6】:

      您的布局中似乎没有任何内容。如果您在项目中展开 res/layout 目录,请双击 main.xml 文件。只需添加一个按钮或其他东西并给它一个ID。应该可以的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-06
        • 2015-05-31
        • 2021-03-24
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 2021-10-29
        相关资源
        最近更新 更多