Eclipse의 프로젝트에서 WITH SYSTEM JRE 9을 실행 중입니다. Java 컴파일러를 JDK 9로 설정하려고 할 때 null이 발생합니다.JDK 9에서 ToolProvider.getSystemJavaCompiler()가 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 잘 작동
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 8에서 실행)?
업데이트 : 내가 JDK 9에서 내 프로젝트를 실행하는 경우가 getSystemJavaCompiler()하지만 중요한 확실하지가 대응 경로를 변경 JRE 9
물론 JRE만으로는 작동하지 않습니다. 나는 이것이 JRE 8로 시작하고'java.home'을 JDK 8 디렉토리로 바꿀 때 이것이 작동한다고 말했다. 이해가 안되는 점은 JRE9 - JDK9 쌍에 대한 작동이 중지된다는 것입니다. – vda8888
@ vda8888 with JRE9는'... jdk-9.0.1.jdk \\ Contents \\ Home'의 경로를 설정합니까? – nullpointer
시스템 프로퍼티'java.home'가이 기능과 관련이 있다고 명시된 적이 없습니다. 따라서 변경된 이전 Java 버전의 구현 세부 사항을 사용하고있었습니다. 'ToolProvider' API의 모든 목적은 컴파일러에 접근하기위한 구현 세부 사항의 사용을 중단하는 것입니다. 왜 이러는거야? Eclipse의 Launch Configuration에서 jdk를 지정하여 jdk로 애플리케이션을 실행하면 어떨까요? – Holger