자바 클래스 파일 형식의 메이저버전 번호 목록
다음 자바 메이저버전 번호 리스트를 다른 투고에서 보았습니다.
- 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을 사용합니다.
- Java 15는 메이저버전 59를 사용합니다.
- Java 16은 메이저버전 60을 사용합니다.
- Java 17은 메이저버전 61을 사용합니다.
이 리스트는 어디서 온 거예요?이에 대한 구체적인 참고 사항이 있습니까?마이너 버전도 보여 주는 것이 좋습니까?
이것들은 클래스 버전에서 나온 것입니다.Java 5 런타임에서 Java 6용으로 컴파일된 것을 로드하려고 하면 "compatible class version, got 50, expected 49"라는 오류가 나타납니다.아니면 그런 비슷한 것.
자세한 내용은 바이트 오프셋7 을 참조해 주세요.
추가 정보는 이쪽에서도 확인할 수 있습니다.
Wikipedia 페이지에서 클래스 파일 형식을 설명하는 Java 클래스 파일 버전 목록을 찾았습니다.
http://en.wikipedia.org/wiki/Java_class_file#General_layout
바이트 오프셋6 및 7 아래에 대응하는 Java VM 버전이 나열됩니다.
메이저 버전 번호의 공식 소스:
Java Virtual Machine Specification, 4장.클래스 파일 형식
JVM 규격의 최신 공개 버전은 여기에서 확인할 수 있습니다.
"클래스 파일의 오류 컴파일러"에 문제가 있는 경우 이클립스를 통해 프로젝트의 JRE를 대응하는 것으로 변경함으로써 이 문제를 해결할 수 있습니다.
- 빌드 패스
- 빌드 경로 구성
- 친구가 마지막으로 보여주는 표의 대응자로 라이브러리를 변경합니다.
- "jar file"을 생성하여 컴파일 및 실행합니다.
내가 그랬더니 효과가 있었어.
에 클래스 파일이 있는 경우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바이트 코드레벨로 컴파일된 것을 의미한다.
클래스에 대해 .lessfilter에서 javap을 사용하기 때문에 컴파일을 해제하고 어떤 버전으로 컴파일되었는지 직접 알 수 있습니다.
*.class)
echo "/** "
javap -verbose "$1" | grep version | sed -e 's/50/Java6/' -e 's/51/Java7/' -e 's/52/Java8/' -e 's/53/Java9/' -e 's/54/Java10/' -e 's/55/Java11/' -e 's/56/Java12/' -e 's/57/Java13/'
echo " **/"
java -jar ~/bin/cfr-0.150.jar "$1" | enscript --color --language=ansi --highlight=java -o - -q
;;
(이전 답변에 코멘트로 추가할 수 없지만 코드를 포맷할 수 없어서 다른 사람에게 도움이 될 수 있다고 생각했습니다.)
(답변보다 정말 장황한 코멘트...)
이 질문은 "버전 목록은 어디에서 왔는가?"에 관한 것이었다.
이 응답에서는, 「파일 형식」의 JAVA SE 사양을 참조하고 있습니다.꽤 신뢰할 수 있는 것 같습니다(Wiki에서도 바이트 6(메이저 버전) 값을 참조하고 있습니다).이 답변은 받아들여져야 합니다.
가지 은 이 정하느냐에 이 맞춰져 것 같습니다.javap
돼요.그것들은 별개의 질문이어야 한다. '없음', '없음'javap
버전을 검색하는 방법은 unix 명령어입니다.file
는 ClassFile 구조체에 지정되어 있는를 읽습니다.
: ,,file myClass.class
혹은 더 우아하게file -b myClass.class | awk -F',' '{print $NF}'
예:
$ find * -name "*.class" -exec file -b {} \; | awk -F',' '{print $NF}' | sort -u
version 45.3
version 50.0 (Java 1.6)
version 52.0 (Java 1.8)
언급URL : https://stackoverflow.com/questions/9170832/list-of-java-class-file-format-major-version-numbers
'programing' 카테고리의 다른 글
지역 의존 해시를 이해하려면 어떻게 해야 하나요? (0) | 2022.06.29 |
---|---|
Vue 2. JSX에서 v-html을 사용하는 방법 (0) | 2022.06.29 |
Vue 라우터 킵얼라이브가 작동하지 않음 (0) | 2022.06.29 |
null의 '포함' 속성을 읽을 수 없습니다. (0) | 2022.06.29 |
이벤트 VueJs의 소품 컴포넌트 (0) | 2022.06.29 |