R.java中的奇怪错误,即使在清理项目后也是如此:“下划线只能与源代码级别1.7或更高版本一起使用”

2022-09-03 18:18:15

所以一切都进行得很顺利,直到不久前,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

以前有人遇到过这样的问题吗?


答案 1

这是两件事的组合:

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

  2. 在Java 7中,他们为整数文本引入了替代语法;例如: 与 相同。1_0001000

因此,正在发生的事情是编译器正在解析为...如果源代码级别是Java 7,然后告诉您您没有使用Java 7,这是合理的。如果您一直在使用Java 7,则该编译错误将被替换为一个错误,该错误指出整数文本()在当时是不合法的。5_content_new5_ content_new5_

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


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


答案 2

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

Eclipse Error(如果不能很好地看到图像,则对话框显示资源名称必须以字符开头。

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

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


推荐