这可能看起来很奇怪,但注释中的文本导致我的代码无法编译。 (这是反编译后的代码;我通常不会这样格式化)。
注释(在文件的最后;由反编译器自动添加):
/* Location: C:\Pokechu22\TestServer\plugins\uSkyBlock.jar
* Qualified Name: us.talabrek.ultimateskyblock.uSkyBlock
* JD-Core Version: 0.7.0.1
*/
这是它在 eclipse 中的样子。
以下是确切的错误消息(这些是唯一的错误消息,并且都在一条评论中):
Description Resource Path Location Type Core cannot be resolved to a type uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock line 2009 Java Problem Invalid unicode uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock line 2005 Java Problem Qualified cannot be resolved to a type uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock line 2007 Java Problem
plugins
的错误是 eclipse 提示拼写错误:The word 'plugins' is not correctly spelled
。
这对我来说很容易解决 - 我可以删除该评论 - 但为什么会发生这种情况?注释中的代码不应该被完全忽略吗?
编辑:作为附加说明,所有错误都在注释 block 内,删除注释 block 允许代码编译。这不是这里的问题。我的问题是为什么 java 根本不关心评论中的文本?
最佳答案
问题是字符串 \u
被 Eclipse 解释为 unicode 字符的前缀,而在这里它只是注释中文件名的一部分。删除此错误的唯一方法是删除 \u
部分,例如,如果要在 javadoc 中显示,则将其替换为 \u
,或转义反斜杠字符:\\u
。
请注意,这是 Eclipse 的一个已知“错误”,请参阅:Bug 6677 Bug 10753
虽然这种行为与 Java 规范一致,因为 Java 注释可以包含 unicode 字符:
Except for comments, identifiers, and the contents of character and string literals, all input elements in a program are formed only from ASCII characters (or Unicode escapes which result in ASCII characters).
关于java - 注释中的代码导致编译失败 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25839301/