[트러블슈팅] 자바 버전별 차이 - f-lab-edu/jshop GitHub Wiki

테스트를 진행하며 자바의 버전별 차이에 대해 경험하게되었다.

개발장비에서는 JDK 22 버전을 사용하고 있었고, 테스트환경에서는 JDK 17 버전을 사용했다. 스크린샷 2024-06-18 18 38 45

문제가 되는것은 List.getLast() 인터페이스였다.

로컬 테스트에서는 아무런 문제가 없었는데, github-actions 테스트를 진행하는 도중에 컴파일 오류가 나고 멈춰버렸다.

원인은 List.getLast() 를 찾지 못한 오류였다.

JDK 17, 21의 List 인터페이스의 차이

우선 List 인터페이스를 찾아봤다.

스크린샷 2024-06-18 18 41 56

문서에는 getLast() 메서드가 있다고 나오지만, 혹시나 해서 버전을 확인해봤더니 JDK 21 이였다.

문득 테스트 환경을 17 버전으로 세팅한것이 생각나 17 버전또한 찾아봤다.

찾아보니 17 버전의 List 인터페이스에는 getLast() 메서드가 없었다.

해결

두 환경간 JDK 버전만 맞춰주면 끝나는 문제였다.

하지만 그동안 자바 버전에 의한 차이를 말로만 들었었지, 실제로 겪어본건 처음이였다.

생각보다 이런 세세한 부분에서도 차이가 난다는걸 배웠다.