이번 프로젝트에서 처음으로 Java11을 사용하기로 했다. 팀에서 계속 Java8 버젼만 사용하다가 새로운 프로젝트를 만들려고 보니 Java11, Java15 버젼도 있는데 8 버젼만 사용하는게 좀 이상했다. Java 11로 넘어오면서 달라진 차이점은 조만간 정리할 예정이다.
일단 자바 버젼을 변경하고 IntelliJ 를 실행하니
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Plain Text
복사
이러한 에러가 발생했다. Java SE 11 이 target 인데 JDK8 버젼으로 수행할 수 없다. 당연한 이야기지
IntelliJ 에서 한군데 수정하니 문제 없이 실행된다.
File → Settings → Build, Execution, Deployment → Build Tools → Gradle 에서
이 이외에도 자바 버젼을 선택하는 부분이 있다.
•
File → Settings → Build, Execution, Deployment → Compiler → Java Compiler
◦
생성되는 자바 bytecode 의 버젼을 명시한다.
◦
최소한 이 버젼의 JVM이 적용되어야 한다 라는 의미라서 자바 버젼을 왔다갔다 한다면 8로 해도 되지 않을까 싶다
◦
어떠한 모듈에서 특정한 java 버젼을 사용하고 싶다면 Per-module 에 추가할 수 있다.
•
File → Project Structure → Project → Project SDK
•
project 의 language level 을 결정하는 설정이다.
•
.idea, .xml 와 같은 project 파일에 함께 명시된다.
•
프로젝트에서 사용하는 SDK 버젼이다.
•
프로젝트 컴파일러 출력 경로 혹은 라이브러리가 포함되어 있다.
여기서 설정하면 알아서 Gradle 도 의존성을 갖고 버젼이 변경되면 좋을텐데 왜 그렇게 안되있는지 모르겠다.