STS配置JDK的核心就一句话:先区分“启动JDK”和“项目编译JDK”,前者改sts.ini里的-vm参数,后者在Preferences里添加Installed JREs。 很多新手卡在sts怎么配置jdk上,多半是因为只看教程改了项目JDK,却忘了STS本身还需要一个更高版本的JDK来启动。
Windows下sts配置jdk1.8详细步骤
先说最常见需求:用JDK 1.8跑Spring项目,但装了新版STS,这时你需要做两件事。
先让STS本体能启动
STS 4.x不支持用JDK 1.8启动,如果你只有JDK 1.8,启动会直接失败,先把JDK 17或21装到电脑上,然后修改STS目录下的SpringToolSuite4.ini。
- 找到STS安装目录,进入根文件夹。
- 右键
SpringToolSuite4.ini,选择用记事本打开。 - 在文件最顶部另起两行输入:
-vm C:/Program Files/Java/jdk-17.0.10/bin/javaw.exe - 路径按实际JDK安装位置改,如果路径含空格,直接写完整路径即可。
-vm参数放在--launcher.appendVmargs之前最稳妥,放在后面可能被启动器忽略。- 保存文件,重启STS。
有人会问:为什么不用配windows环境变量?因为环境变量是给命令行和构建工具用的,STS改ini最直接,但装JDK后,你仍然可以用java -version和javac -version确认安装是否完整。
再让项目用上JDK 1.8
STS本身用17启动后,项目可以继续使用JDK 1.8。
- 打开STS,点击
Window -> Preferences。 - 展开
Java -> Installed JREs。 - 点击
Add,选择Standard VM,点Next。 - 在
JRE home里选择JDK 1.8的安装目录,例如C:\Program Files\Java\jdk1.8.0_402。 - 点
Finish,勾选刚添加的JDK 1.8作为默认。 - 右键项目,进入
Properties -> Java Build Path -> Libraries
。
- 选中
JRE System Library,点Edit,切换成JDK 1.8。 - 再到
Properties -> Java Compiler,把Compiler compliance level改成8。
这样启动用17,编译运行用8,两不耽误,多数情况下,Spring Boot 2.x项目用这套组合不会出问题。
Mac下sts配置jdk要避开的坑
Mac的场景经常出现在公司统一了JDK版本,但开发机是MacBook,很多人直接改系统的.bash_profile或.zshrc里的JAVA_HOME,发现STS还是报错。
找到Mac里的配置文件
Mac版STS的配置文件藏得比较深,在应用程序包里。
- 打开
访达,进入应用程序。 - 找到
SpringToolSuite4.app,右键选择。 - 依次进入
Contents -> Eclipse。 - 找到
SpringToolSuite4.ini,用文本编辑器打开。
在文件顶部添加:
-vm
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin/java
这里的路径必须指向JDK包内的bin/java,不要指到/usr/bin/java,Mac系统默认的/usr/bin/java是个软链接,版本会随系统更新变化,容易导致STS启动后配置错乱。
用java_home查真实路径
如果不知道JDK装在哪儿,打开终端执行:
/usr/libexec/java_home -V
会列出所有已安装JDK的真实路径,复制需要的那个,填到ini里,如果遇到ini无法保存的情况,很可能是权限问题,把文件复制到桌面修改后再拷回原路径覆盖即可。
sts配置jdk17和jdk1.8怎么选
很多人在这两个版本之间纠结,其实选择不复杂。
| 对比项 | JDK 1.8 | JDK 17 |
|---|---|---|
| 适合STS版本 | STS 3.x及以下 | STS 4.x及以上 |
| 能启动STS 4.x | 不能 | 能 |
| Spring Boot 2.x项目 | 可用 | 可用 |
| Spring Boot 3.x项目 | 不可用 | 必须用 |
| 长期支持 | 已停止免费更新 | 长期支持 |
| 企业老项目兼容 | 好 | 需要模块化调整 |
行业共识认为,如果你还在维护老旧的Spring Boot 1.x/2.x项目,JDK 1.8是绕不开的;但STS 4.x本身必须用JDK 17或21启动,所以最稳妥的组合是:启动用JDK 17,项目编译用JDK 1.8。
业内专家指出,JDK 17的垃圾回收和启动性能比JDK 1.8改善明显,即便项目目标字节码是1.8,编译工具链用17也不会影响最终部署。
STS配置JDK和Eclipse配置JDK有什么不同
很多教程把STS和Eclipse混着讲,但实际配置时容易踩坑。
配置文件位置不同
- Eclipse的启动配置文件叫
eclipse.ini。 - STS的启动配置文件叫
SpringToolSuite4.ini。 - Mac版STS的ini文件在
Contents/Eclipse目录下,而Eclipse的ini在Contents/Eclipse/eclipse.ini,路径层级不一样。
版本匹配规则不同
- 旧版Eclipse 4.8可以用JDK 1.8启动。
- STS 4.x基于较新的Eclipse,必须用JDK 17或21启动。
- Eclipse的Installed JREs配置界面与STS基本一样,但不要照着Eclipse教程去改STS的启动文件。
这就是为什么有人用eclipse配置jdk的方法去弄sts,结果一直改不对,工具名字相似,文件名字和版本要求完全不同。
验证STS的JDK配置是否生效
改了配置,总得确认一下,有两个直观的判断方法。
查看启动JVM
点击菜单Help -> About Spring Tool Suite 4,再点Installation Details

,切到Configuration标签页。
在打开的页面里搜索java.home,对应的值就是你当前STS启动使用的JDK路径,如果显示的还是旧路径,说明ini没改对。
查看项目运行JDK
在项目里写个简单的main方法:
System.out.println(System.getProperty("java.home"));
运行后控制台输出的路径,就是项目实际使用的JRE,这个路径应当和你设置的Installed JREs中的JDK路径一致。
Windows和Mac都可以在命令行里临时指定启动JDK,不修改ini直接启动:
SpringToolSuite4 -vm /path/to/java
这种方式适合快速测试某个JDK版本能否正常拉起STS,但每次都要手动输入,不方便长期使用。
STS配置JDK并不复杂,只要把“启动JDK”和“项目JDK”分开处理,基本不会出错,先保证STS能启动,再决定项目用哪个版本编译。
Q&A
sts怎么配置jdk才不算配错?
判断标准有两个,第一,STS能正常打开,不弹JRE缺失报错,第二,项目运行时输出的java.home路径和你预期的JDK路径一致,两点同时满足,配置才算成功。
为什么sts配置jdk1.8后还是启动失败?
因为新版STS 4.x本身不支持JDK 1.8启动,JDK 1.8只能作为项目的编译和运行JDK,不能作为启动STS的JVM,需要先安装JDK 17或21,并修改SpringToolSuite4.ini里的-vm参数。
mac sts配置jdk时显示包内容找不到ini文件怎么办?
先确认自己打开的是SpringToolSuite4.app而不是安装镜像,右键应用图标后,如果没看到“显示包内容”,说明你选中的是替身文件,进入应用程序目录找到原始应用再操作,ini文件固定在Contents/Eclipse/SpringToolSuite4.ini路径下。

