【问题标题】:Code inside of a comment is causing compile failure - Why?注释内的代码导致编译失败 - 为什么?
【发布时间】:2014-09-15 00:21:55
【问题描述】:

这可能看起来很奇怪,但注释中的文本导致我的代码无法编译。 (这是反编译的代码;我通常不会这样格式化)。

注释(在文件的最后;由反编译器自动添加):

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

 * Qualified Name:     us.talabrek.ultimateskyblock.uSkyBlock

 * JD-Core Version:    0.7.0.1

 */

这是它在 Eclipse 中的样子。

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

描述资源路径位置类型 核心无法解析为类型 uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock line 2009 Java 问题 无效的 unicode uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock 行 2005 Java 问题 Qualified 无法解析为类型 uSkyBlock.java /SO_UnicodeEscapeError/src/us/talabrek/ultimateskyblock line 2007 Java 问题

plugins 的错误是 eclipse 抱怨错字:The word 'plugins' is not correctly spelled

这对我来说很容易解决 - 我可以删除该评论 - 但为什么会发生这种情况? cmets中的代码不应该被完全忽略吗?


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

【问题讨论】:

    标签: java eclipse compiler-errors


    【解决方案1】:

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

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

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

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

    §3.1

    【讨论】:

    • 嗯,这有点道理。不过,这是一种令人讨厌的行为。
    • 至少这是一个已知的错误(尽管他们似乎并不关心)。所以我不是唯一一个遇到这种问题的人。
    【解决方案2】:

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

    【讨论】:

    • 这不是问题 - 代码在删除该注释时编译。我可以编译它;我只是对为什么 java 甚至关心该注释中的代码并导致三个错误感到困惑。
    • 关于 Qualified 和 Core 的两个错误只是警告,可以用它们成功编译您的代码,问题仅在于无效的 unicode,即使在评论中也无法读取 Eclipse
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多