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

JDK版本高于1.8.0时JavaCompiler始终为空的问题咨询

关于指定java.home获取JavaCompiler的测试结果与问题排查

我刚完成了一组测试,验证通过指定java.home系统属性来获取JavaCompiler的场景,用到的核心代码如下:

System.setProperty("java.home", "/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home");
javax.tools.JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

我一共测试了这几个JDK版本:jdk1.8.0_144.jdk、jdk1.8.0_162.jdk、jdk-9.0.4.jdk、jdk-10.jdk、jdk-11.jdk,结果差异很明显:

  • JDK 1.8.0系列:不管是144还是162版本,编译器都无法正常工作,报错指向缺失文件/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/lib/currency.data。推测是JDK安装包不完整,或者后续文件被误删导致的。
  • JDK 9及以上版本(9/10/11):这些版本里,ToolProvider.getSystemJavaCompiler()都能成功获取到编译器实例,并且可以正常执行编译操作,没有出现文件缺失的问题。

如果在JDK 1.8环境下遇到这个问题,建议先检查对应JDK目录下的lib文件夹是否存在currency.data,如果确实缺失,重新安装完整的JDK 1.8版本应该能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:47:22