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

다른 게시물에서 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



답변

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

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

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


답변

Wikipedia 페이지에서 클래스 파일 형식을 설명하는 Java 클래스 파일 버전 목록을 찾았습니다.

http://en.wikipedia.org/wiki/Java_class_file#General_layout

바이트 오프셋 6 및 7에서 버전이 해당하는 Java VM과 함께 나열됩니다.


답변

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

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

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


답변

에 클래스 파일이 있으면 다음 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 바이트 코드 레벨로 컴파일되었음을 의미합니다.


답변