My project in Eclipse is running WITH SYSTEM JRE 9. When I try to set Java home to JDK 9 to get the system compiler I got 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
This code previously works fine with JDK 8 (running from 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
Has there been any change to how ToolProvider.getSystemJavaCompiler requirement works?
Update: not sure if it matters but getSystemJavaCompiler() works fine if I run my project from JDK 9 (change to java.home is no longer required) as opposed to JRE 9.
Correspondingly changing the path on Unix to
/Contents/Home
works for me :Though there doesn't seem to be a need of setting the property at all. Since the following line of code even independently executes fine as well:
with
JAVA_HOME
on my system set to point to JDK9Home
directory.