14

所以一切都很顺利,直到不久前 R.java 决定在添加图标后出现此错误(5_content_new.png确切地说是 )。

我试过清理项目并重新启动eclipse,但无济于事。

问题代码:

public static final class drawable {
    public static final int 5_content_new=0x7f020000;
    public static final int ic_launcher=0x7f020001;
    ...
}

红线出现在 下方5_,错误提示:

Underscores can only be used with source level 1.7 or greater

有没有人遇到过这样的问题?

4

5 回答 5

24

这是两件事的结合:

  1. Java 标识符不能以数字开头。第一个字符应该是一个字母。

  2. 在 Java 7 中,他们为整数文字引入了替代语法;例如1_000与 相同1000

所以发生的事情是编译器解析5_content_new5_ content_new... 如果源代码级别是 Java 7,这是合理的,然后告诉您您没有使用 Java 7。如果您一直在使用 Java 7,则该编译错误将被一个错误所取代,该错误表明整数文字 ( 5_) 在那时是不合法的。

简而言之,代码中包含的东西太“离谱”了,以至于编译器编写者在编译器诊断代码中没有预料到它。


另一点是,在 Java 中的变量、方法、类或包名中使用 ANY 下划线是违反样式的。下划线只能用于全大写常量名称,如“MAX_VALUE”。

于 2013-02-23T06:35:03.757 回答
3

我刚刚尝试在我的一个编译良好的 Android 项目中重命名现有的可绘制对象,Eclipse 抛出了这个对话框:

日食错误 (如果不能很好地看到图像,对话框会说资源名称必须以字符开头。

我生成此对话框的方式是重命名可绘制文件。可绘制对象的原始名称是button_blue_normal.9.png,将其重命名为5_button_blue_normal.9.png并按下回车键。按下回车后立即弹出对话框。

我从来不知道这一点,但显然你需要一个字母字符,而不是一个数字,在可绘制文件的文件名的开头。

于 2013-02-23T05:41:23.223 回答
1

我知道我参加聚会迟到了,但是当我开始使用 ActionBar 组件时,我自己也遇到了这个问题。

ScootrNova 的回答让我找到了解决方案。问题是我下载的用于教程的 Android 推荐图标包。所有文件名都以整数开头(1_xxx.png 等)。我删除了我不使用的那些,将其他的重命名为以字母开头的东西(我以“icon_xxx.png”为例),它编译没有错误。

于 2013-09-23T20:06:15.200 回答
1

我有同样的问题,我在没有开始的文本后面加上数字后解决了这个问题。我有第2_Activity行并将其更改为Activity2。这是我的解决方案。希望它会帮助某人。

于 2014-05-07T21:47:51.537 回答
0

我有同样的问题。解决方法:查看 res 文件、drawlables 或内部 xml,并将以(数字下划线字符串)1_string 开头的文件或字符串重命名为 string_1。

希望这有助于解决问题。

于 2014-09-16T13:45:18.390 回答