목차
java class version 확인
개발을 하다보면 컴파일된 자바 클래스 버전을 확인해야 되는 경우가 있다.
실서버의 클래스 버전을 미리 확인 한 다음 그에 맞춰서 로컬 소스를 컴파일 하는게 좋다.
공공기관 배포 시 에러를 처음 만났을 때 30분을 날려먹은 기억이 난다.(노트북을 가져가지 않아서 다시 컴파일을 한 파일을 받아야 되서)😭
만일 미리 확인 하지 않고 그냥 배포할 경우 unsupported major version 에러를 만나게 될 수도 있다.
만나는 걸 권장하지는 않지만 어떤 에러인지 직접 만나보는 것도 나쁠 것 같지는 않다.(시간이 여유로우면)
에러는 개발자를 성장 시켜주는 듯 싶다.
예를 위해 일부러 에러를 발생시켜 봤다.
예제는 IncludedInfo.class에서 버전 에러가 난 것인데 Unsupported major.minor version 52.0라고 한다.
"java major version"으로 구글링 해보면 자세히 나오는데 java major.minor versino이 52이면
java 8버전으로 컴파일 된 클래스란 소리다.
진짜인지 확인 해보겠다.(전제조건 내 컴퓨터에 jdk 환경변수가 잡혀 있어야 된다.)
cmd 실행 후 해당 에러가 발생하는 클래스가 있는 경로로 이동 후 아래처럼 명령어를 입력한다.
javap -verbose class명(.class는 생략해도 무방) | find "version"
내 경우는 이클립스의 workspace를 G드라이브로 빼놔서 G드라이브의 workspace의 프로젝트 경로로 이동했다.
위에서 예상대로 major version이 52라고 나온다, 즉 해당 class는 java 1.8 버전으로 컴파일 된거다.
이 경우는 1.8에 맞춰서 로컬 소스를 컴파일 해줘야 실제 배포 시 에러가 발생하지 않는다.
이클립스 java compile 버전 변경😊
이클립스에서 컴파일 버전 설정은 아래처럼 하면 된다.
해당 프로젝트 우클릭 > Java Compiler > Compiler compliance level에서 원하는 버전으로 설정 후 Apply
만일 저기서 컴파일 버전을 1.6으로 변경하면 아래처럼 1.6 버전으로 컴파일 된 클래스가 생성된다.
Tomcat Runtime Environment 버전 변경😘
위의 경우는 소스코드 컴파일 버전만 변경을 한거고 이클립스에서 에러가 발생 안나도록 하려면 tomcat 런타임환경설정도 변경 해줘야 한다.
컴파일 버전만 변경한 다음 로컬에서 tomcat 실행 시 아래처럼 여전히 에러가 발생한다.
원인은 tomcat의 런타임 환경이 1.7로 되어 있어서 1.8로 컴파일 한 class를 tomcat이 읽을 수 없기 때문이다.
해당 프로젝트의 tomcat 런타임 환경을 바꾸겠다.
Servers > 해당 프로젝트 서버 클릭 > Runtime Environment 클릭 > JRE 버전 변경 후 Finish
그 후 다시 tomcat을 재실행해 보면 에러가 발생하지 않는다.
정리하면 이렇다.
미리 실서버의 java 클래스 버전을 javap 명령어로 확인 후 그에 맞춰서 컴파일 후 배포
로컬에서 테스트 시 톰캣 런타임 환경도 맞출 것
'IT > development' 카테고리의 다른 글
[php] Windows 10 Laravel 설치... (0) | 2022.11.23 |
---|---|
[apache/php] apache/php 로컬환경 세팅(apm, xampp 미사용) (0) | 2022.11.23 |
[Java] 자바 Thread(feat. Thread , Runnable, join) (0) | 2022.11.23 |
[eclipse] preparing launch delegate(feat. tomcat 무한 starting) (0) | 2022.11.23 |
[eclipse] eclipse java comment template 설정 (0) | 2022.11.23 |