配置OpenJDK 11后Spring Tool Suite无法启动求助
解决OpenJDK 11环境下Spring Tool Suite 3.9.x启动失败问题
你的问题核心在于STS 3.9.2(基于Eclipse Oxygen 4.7)对Java 11的原生支持不足,加上Java 11移除了javax.annotation这类Java EE相关的模块,导致启动时出现NoClassDefFoundError。下面给你两种可行的解决方案:
方案一:升级到支持Java 11的STS版本(推荐)
STS 4.x系列(比如STS 4.6及以上)基于Eclipse 2019+版本,原生支持Java 11及更高版本,不需要额外配置就能直接用OpenJDK 11启动。如果你没有必须使用STS 3.x的理由,这是最省心的解决办法。
方案二:修改STS.ini配置适配Java 11(针对必须使用STS 3.9.x的情况)
如果需要继续使用当前的STS 3.9.2,你需要修改STS.ini的VM参数,手动引入缺失的模块并更新Java版本要求:
- 找到你的
STS.ini文件,打开并定位到-vmargs部分 - 按以下方式修改参数:
-startup plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.551.v20171108-1834 -product org.springsource.sts.ide --launcher.defaultAction openFile -vm C:\Program Files\Oracle\OpenJDK 11.0.1\bin\javaw.exe -vmargs -Dosgi.requiredJavaVersion=11 --add-modules=ALL-SYSTEM,javax.annotation,java.xml.bind -Xms40m -Dosgi.module.lock.timeout=10 -Xverify:none -Dorg.eclipse.swt.browser.IEVersion=10001 -Xmx1200m - 保存文件后,重新启动STS.exe
配置说明:
-Dosgi.requiredJavaVersion=11:告诉STS当前使用的Java版本是11,避免版本校验冲突--add-modules=ALL-SYSTEM,javax.annotation,java.xml.bind:Java 11中移除了javax.annotation.PostConstruct/PreDestroy所在的模块,需要通过该参数显式引入,让STS能找到这些类
内容的提问来源于stack exchange,提问作者cgsabari
相关产品推荐
相关产品推荐

