Java 클래스 파일 형식 주요 버전 번호 목록?


173

다른 게시물에서 Java의 주요 버전 번호 목록을 보았습니다.

  • Java 1.2는 메이저 버전 46을 사용합니다
  • Java 1.3은 메이저 버전 47을 사용합니다
  • Java 1.4는 메이저 버전 48을 사용합니다
  • Java 5는 메이저 버전 49를 사용합니다.
  • Java 6은 메이저 버전 50을 사용합니다.
  • Java 7은 주요 버전 51을 사용합니다.
  • Java 8은 메이저 버전 52를 사용합니다.
  • Java 9는 메이저 버전 53을 사용합니다.
  • Java 10은 메이저 버전 54를 사용합니다.
  • Java 11은 메이저 버전 55를 사용합니다.
  • Java 12는 메이저 버전 56을 사용합니다.
  • Java 13은 메이저 버전 57을 사용합니다.
  • Java 14는 메이저 버전 58을 사용합니다.

참고 문헌 :

https://blogs.oracle.com/darcy/entry/source_target_class_file_version https://en.wikipedia.org/wiki/Java_class_file#General_layout

답변:


45

이것들은 클래스 버전에서 나온 것입니다. java 5 런타임에서 java 6 용으로 컴파일 된 것을로드하려고하면 호환되지 않는 클래스 버전에서 50을 얻었을 것으로 예상됩니다. 예상치가 49입니다.

참조 여기 바이트에 대한 추가 정보를 원하시면 7 오프셋.

추가 정보는 여기 에서도 찾을 수 있습니다 .


다음 과 같은 기존 클래스를 사용하지 않고 javac 에서 직접 주요 버전 번호 (클래스 버전)를 에코하는 방법이 javap -verbose MyClass있습니까?
samis

없습니다.
Stephen C


2

"클래스 파일의 오류 컴파일러"에 대해 문제가있는 경우 Eclipse를 통해 프로젝트의 JRE를 해당하는 것으로 변경하여이 문제를 해결할 수 있습니다.

  1. 빌드 경로
  2. 빌드 경로 구성
  3. 친구가 마지막에 표시하는 테이블의 대응 자에게 라이브러리를 변경해주세요.
  4. "jar 파일"을 작성하고 컴파일하고 실행하십시오.

나는 그것을했고 효과가 있었다.


0

에 클래스 파일이 있으면 다음 build/com/foo/Hello.class명령을 사용하여 컴파일 된 Java 버전을 확인할 수 있습니다.

javap -v build/com/foo/Hello.class | grep "major"

사용법 예 :

$ javap -v build/classes/java/main/org/aguibert/liberty/Book.class | grep major
  major version: 57

OP의 표에 따르면 메이저 버전 57은 클래스 파일이 JDK 13 바이트 코드 레벨로 컴파일되었음을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.