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

时间:2018-01-06 13:55:39

标签: java eclipse spring-tool-suite java-9 eclipse-oxygen

我更新了我的系统以主要运行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

非常感谢任何解决此问题的帮助。

3 个答案:

答案 0 :(得分:2)

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

为了针对特定级别编译项目,您必须在首选项中配置相关的JDK。听起来像你说你已经这样做了。还有一个名为“执行环境”的子部分,您可以在其中指定计算机上哪个JDK应该用于哪个Java语言级别。确保在那里选择了正确的JDK。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

对于那些在未来遇到同样问题的人:我解决了这个问题,但之前发布的都没有纠正这个问题(虽然它们很有帮助)。我按照here的步骤添加了' -clean'行到我的sts.ini文件并重新启动eclipse。