You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Java17与Gradle8.0.2后STS无法打开Java类求助

解决STS 4升级Java 17+Gradle 8.0.2后无法打开Java类的异常

这个异常是Java模块系统的权限限制导致的——STS的类加载器试图通过反射访问Java核心模块的内部API,而Java 17默认禁止这种跨模块的非授权访问。以下是具体解决步骤:

1. 升级STS到兼容Java 17的版本

旧版本STS(比如4.15及更早)对Java 17的支持不完善,建议直接升级到STS 4.16及以后的稳定版本,新版本已经针对Java 17的模块系统做了适配,大概率能直接解决问题。

2. 给STS添加VM启动参数(如果暂时不升级)

修改STS安装目录下的sts.ini文件,在-vmargs下方添加以下参数,开放Java核心模块对未命名模块的反射权限:

--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.io=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.util.concurrent=ALL-UNNAMED

保存后重启STS即可生效。

3. 检查并修正项目的JDK配置

确保项目的编译、运行环境都切换到Java 17:

  • Gradle配置:在项目的build.gradle中确认Java版本设置:
    plugins {
        id 'java'
    }
    
    java {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    
    // 如果是Spring项目,还要确认Spring Boot版本兼容Java 17(比如2.7+或3.x)
    
  • STS项目配置:
    • 右键项目 → Properties → Java Build Path,确认JRE System Library使用的是Java 17;
    • 右键项目 → Properties → Java Compiler,勾选Enable project specific settings,将Compiler compliance level设置为17。

4. 清理重建项目

  • 执行Gradle任务:右键项目 → Gradle → Run Gradle Tasks,运行clean和build;
  • STS中执行:Project → Clean...,选择当前项目清理;
  • 刷新Gradle项目:右键项目 → Gradle → Refresh Gradle Project。

内容的提问来源于stack exchange,提问作者siva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:25:43