3

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 要件の動作方法に変更はありますか?

更新: 問題があるかどうかはわかりませんが、JRE 9 ではなく JDK 9 からプロジェクトを実行すると (java.home への変更は不要になりました)、getSystemJavaCompiler() は正常に動作します。

4

1 に答える 1