我在 Eclipse 中的项目正在运行WITH SYSTEM JRE 9。当我尝试将 Java 主页设置为 JDK 9 以获取系统编译器时,我得到了 null。
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk-9.0.1");
System.out.println(System.getProperty("java.home")); // print C:\Program Files\Java\jdk-9.0.1
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); // returns null
此代码以前在 JDK 8 上运行良好(从 JRE 8 运行)
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.8.0_152");
System.out.println(System.getProperty("java.home")); // print C:\Program Files\Java\jdk1.8.0_152
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); // returns compiler
ToolProvider.getSystemJavaCompiler 要求的工作方式是否有任何变化?
更新:不确定是否重要,但如果我从 JDK 9(不再需要更改为 java.home)而不是 JRE 9 运行我的项目,getSystemJavaCompiler() 工作正常。