안녕하세요. 오랫만입니다. 제 우분투 서버에 설치되어 있는 java랑 javac 버전은 8인데요. 이를 11로 어떻게 바꾸었는지 보도록 하겠습니다.
먼저, Main.java입니다. Map.of 메서드가 보이는데요. 문서를 보면 9 버전부터 적용되는 메서드라고 되어 있어요. 이 메서드가 리턴하는 것은 immutable map이라고 하는데요.
Main.java를 컴파일 해 보면, of 라는 것을 찾을 수 없다는 에러가 나옵니다. 왜 그럴까요? java랑 javac의 버전이 1.8이였기 때문입니다. 저 메서드는 1.9에 추가되었으니 java11로 업데이트를 해 보겠습니다.
저는 우분투를 쓰고 있으니, apt search를 이용해서 openjdk가 들어가는 패키지를 모두 찾도록 하겠습니다.
보니까 제가 찾는 것은 openjdk-11-jdk임을 알 수 있는데요. 이 패키지를 설치하겠습니다.
그러면 openjdk-11-jdk가 설치가 됩니다.
이제 우리는 update-alternatives 명령어를 이용해서 java랑 javac 버전을 선택할 수 있는데요.
update-alternatives --config java를 입력하면, java에 대한 대체 경로를 선택할 수 있습니다.
그리고 update-alternatives --config javac를 입력하면 javac에 대한 대체 경로를 선택할 수 있습니다. 아마도, 이 경로를 보고 어떤 java나 javac를 쓸 것인지 알아내서 실행시키는 것으로 보이긴 하네요. 각각 java8, javac8 버전을 선택한 상태에서, Main.java를 컴파일 해 보겠습니다.
그러면 javac 버전은 1.8.0_312라고 나오는데요. 그렇기 때문에 Map.of 부분에서 컴파일 에러를 뱉게 됩니다. 자바 8 버전에는 Map.of 메서드가 없기 때문입니다. 이제 java와 javac의 버전을 11로 바꾼 다음에 다시 시도해 보겠습니다.
저는 java11의 javac 경로가 0번, java11의 java 경로가 0번으로 잡혀있었기 때문에, 둘 다 0번을 선택하였습니다.
이제 다시 Main.java를 실행시키면 {a=b} 라는 결과를 얻을 수 있습니다. 이제 JAVA_HOME만 바꿔주면 됩니다.
'OS > 리눅스' 카테고리의 다른 글
우분투 apt search 명령어를 이용해서 패키지를 찾아봅시다. (0) | 2021.12.28 |
---|---|
update-alternatives 명령어는 어떤 파일을 읽기에 사용 가능한 버전을 얻어올 수 있을까요? (0) | 2021.12.24 |
linux sort 명령어를 알아봅시다. (0) | 2021.09.28 |
리눅스 sed 명령어를 이용해서 replaceall을 해 봅시다. (0) | 2021.09.13 |
리눅스 sleep 명령어 : 특정 시간동안 delay 시킨다. (0) | 2021.08.15 |
최근댓글