Mein Projekt in Eclipse läuft MIT SYSTEM JRE 9. Wenn ich versuche, Java auf JDK 9 zu setzen, um den Systemcompiler zu bekommen, bin ich null geworden.ToolProvider.getSystemJavaCompiler() gibt null in JDK 9 zurück
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
Dieser Code vorher einwandfrei funktioniert mit JDK 8 (läuft von 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
Gab es eine Änderung, wie ToolProvider.getSystemJavaCompiler Anforderung funktioniert?
Update: nicht sicher, ob es darauf ankommt, aber getSystemJavaCompiler() funktioniert gut, wenn ich mein Projekt von JDK 9 laufen (Änderung java.home ist nicht mehr erforderlich), im Gegensatz zu JRE 9.
Natürlich mit JRE allein würde es nicht funktionieren. Ich habe gesagt, dass dies funktioniert, wenn ich mit JRE 8 starte und das Verzeichnis 'java.home' in JDK8 ändere. Was ich nicht verstehe ist, dass dies für JRE9 - JDK9-Paar funktioniert nicht mehr funktioniert. – vda8888
@ vda8888 mit JRE9 macht den Pfad zu '... jdk-9.0.1.jdk \\ Contents \\ Home' Arbeit für Sie? – nullpointer
Es wurde nie angegeben, dass die Systemeigenschaft 'java.home' für diese Funktion relevant ist. Sie haben also ein Implementierungsdetail früherer Java-Versionen verwendet, das geändert wurde. Der Zweck der ToolProvider-API besteht darin, keine Implementierungsdetails mehr für den Zugriff auf den Compiler zu verwenden. Und warum tust du das? Warum führen Sie Ihre Anwendung nicht einfach mit diesem jdk aus, indem Sie einfach jdk in der Startkonfiguration von Eclipse angeben? – Holger