示例:
import java.util.ArrayList;; //notice extra semicolon
import java.util.List;
还有其他人看到这种行为吗?为什么会显示语法错误?我正在与一个不断将这些内容推送到源代码管理的人合作,这让我感到很烦(他们显然没有使用Eclipse)。
完全透明... 我正在使用SpringSource工具套件2.8.0。
import java.util.ArrayList;; //notice extra semicolon
import java.util.List;
还有其他人看到这种行为吗?为什么会显示语法错误?我正在与一个不断将这些内容推送到源代码管理的人合作,这让我感到很烦(他们显然没有使用Eclipse)。
完全透明... 我正在使用SpringSource工具套件2.8.0。
import
是一个声明而不是语句,你不能在类外部拥有语句。;
结束。SingleTypeImportDeclaration:
import TypeName ;
CompilationUnit:
[[Annotations] package QualifiedIdentifier ; ] {ImportDeclaration}
{TypeDeclaration}
ImportDeclaration:
import [ static] Identifier { . Identifier } [ . * ] ;
您将不再在Eclipse 4.15 (2020.03)中看到以下内容:
导入完成时不再出现多余的分号
大约18年前,有人报告说,导入完成会在已经存在分号的情况下添加一个不必要的分号(例如更改现有导入时)。
现在不再插入这个额外的分号了。
这不是编译器错误, 尽管有时它可能是一个 bug 的迹象 (一些意外删除的代码等).
您可能已经将 Eclipse 的警告设置得非常严格. 我喜欢这个设置. 您最好的方法是设置一些编码标准, 并使用 Checkstyle 和/或 Findbugs 等工具来强制执行它们. 至少其中一个会发现这个问题并惩罚您的同事!
编辑
看起来 Eclipse (至少 3.6 版本, 我没有测试 3.7) 确实将 import 语句后面的双分号报告为编译错误, 不管您的 "空语句" 设置如何. Eclipse 有自己独立于 JDK 编译器的内置编译器. 所以如果 Eclipse 不喜欢这个, 但是 JDK 编译器喜欢, 那么它表明其中一个有 bug (或者至少有不同的 JLS 解释!).
我建议将此问题作为 Eclipse 的 bug 报告 - 纯粹是因为他们通常会非常快速地调查事情, 并解释他们认为自己是正确的原因, 并升级和跟踪与 JDK 开发人员的 bug 报告.
但是我还没有尝试过。