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

JDK17下jshell使用jdk.compiler模块的JavacFileManager报错如何解决

问题解决方法

错误根因

JDK 9及以上版本引入了模块系统限制,com.sun.tools.javac.file 属于jdk.compiler模块的内部非公开包,默认不会导出给未命名模块(jshell默认运行在未命名模块下),仅添加--add-modules jdk.compiler仅能把模块加载到运行环境,没有开放内部包的访问权限,因此会触发包不可见的报错。

修复方案

启动jshell时额外添加--add-exports参数开放对应包的访问权限,完整启动命令如下:

jshell --add-modules jdk.compiler --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED

参数说明:--add-exports 格式为 <模块名>/<包名>=<目标模块>,这里的ALL-UNNAMED指代所有未命名模块,刚好匹配jshell的默认运行环境。

验证操作

启动jshell后执行导入语句:
import com.sun.tools.javac.file.JavacFileManager;
不再触发报错即代表配置生效,你可以正常使用该类的相关功能。

注意:该操作访问的是JDK内部API,不同版本的JDK内部包结构可能存在变动,仅推荐本地测试场景使用,生产环境不建议依赖内部API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:09:00