Java 9 的 Eclipse STS 中的源兼容性问题

Source Compatibility Issues in Eclipse STS with Java 9

我主要将系统更新为 运行 Java 9,我的 spring 项目也支持 Java 9。但是我的 Spring Tool Suite (Eclipse 4.7.2) 其中程序说我的代码与我的源级别兼容性设置不兼容并且必须是 JRE 1.5 及更高版本(例如参数化类型)。

在我的项目属性中,我的编译器合规级别和源兼容性设置为“9”。 在我的 Window-> 首选项中,我已将已检查安装的 JRE 设置到我的 Java jdk-9.0.1 文件夹的位置。

这是我的 sts.ini (eclipse.ini) 文件:

STS.ini

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.551.v20171108-1834
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Xverify:none
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx768m
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-9.0.1\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM

如果能帮助解决这个问题,我们将不胜感激。

您的 STS.ini 看起来有问题:应该只有一个 -vmargs 部分; -vm--launcher.appendVmargs 必须高于 -vmargs:

删除最后三行(重复行)并移动 --launcher.appendVmargs-vm-vmargs 上方的以下行:

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.551.v20171108-1834
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-9.0.1\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Xverify:none
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx768m

您在 STS.ini 中指定的 JVM 与您工作区中的项目及其编译器级别没有任何关系。您可以在 JDK8 之上轻松 运行 STS,并且您的工作区中仍然有针对 Java9.

编译的项目

为了针对特定级别编译项目,您必须在首选项中配置相关的 JDK。听起来你说你已经这样做了。还有一个名为 "Execution Environment" 的子部分,您可以在其中指定机器上的哪个 JDK 应该用于哪个 Java 语言级别。确保您在此处选择了正确的 JDK。

对于那些以后遇到同样问题的人:我解决了这个问题,但是之前的帖子都没有更正这个问题(尽管他们有帮助)。我按照步骤 here 并将“-clean”行添加到我的 sts.ini 文件并重新启动了 eclipse。