注释中的代码导致编译失败 - 为什么?

时间:2014-09-15 00:21:55

标签: java eclipse compiler-errors

这可能看起来很奇怪,但评论中的文字导致我的代码无法编译。 (这是反编译的代码;我不像这样规范地格式化它。)

评论(在文件的最末端;由反编译器自动添加):

/* Location:           C:\Pokechu22\TestServer\plugins\uSkyBlock.jar

 * Qualified Name:     us.talabrek.ultimateskyblock.uSkyBlock

 * JD-Core Version:    0.7.0.1

 */

这是一张日食中的样子。

Image of the oddness

以下是确切的错误消息(这些是唯一的错误消息,并且都在该评论中):

    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

这对我来说很容易解决 - 我可以删除那条评论 - 但为什么会这样呢?不应该完全忽略评论中的代码吗?


编辑:作为补充说明,所有错误都在注释块内,删除注释块允许代码编译。这不是问题。我的问题是为什么java会关注评论中的文字呢?

2 个答案:

答案 0 :(得分:5)

问题是Eclipse将\u解释为unicode字符的前缀,而这里它只是注释中文件名的一部分。删除此错误的唯一方法是删除\u部分,例如将其替换为\u(如果要在javadoc中显示),或者转义反斜杠字符:{{1 }}

请注意,这是一个已知的错误"的Eclipse,请参阅:Bug 6677 Bug 10753

这种行为与Java规范一致,因为Java注释可以包含unicode字符:

  

除了评论,标识符以及字符和内容   字符串文字,程序中的所有输入元素仅由   ASCII字符(或导致ASCII的Unicode转义)   字符)。

§3.1

答案 1 :(得分:2)

这可能是一个代码的复制粘贴块,其中包含eclipse无法读取的unicode字符,请尝试删除它并自行重写