Danh sách định dạng tệp lớp Java số phiên bản chính?


173

Tôi đã thấy danh sách các số phiên bản chính cho Java trong một bài viết khác:

  • Java 1.2 sử dụng phiên bản chính 46
  • Java 1.3 sử dụng phiên bản chính 47
  • Java 1.4 sử dụng phiên bản chính 48
  • Java 5 sử dụng phiên bản chính 49
  • Java 6 sử dụng phiên bản chính 50
  • Java 7 sử dụng phiên bản chính 51
  • Java 8 sử dụng phiên bản chính 52
  • Java 9 sử dụng phiên bản chính 53
  • Java 10 sử dụng phiên bản chính 54
  • Java 11 sử dụng phiên bản chính 55
  • Java 12 sử dụng phiên bản chính 56
  • Java 13 sử dụng phiên bản chính 57
  • Java 14 sử dụng phiên bản chính 58

Người giới thiệu:

https://bloss.oracle.com/darcy/entry/source_target_group_file_version https://en.wikipedia.org/wiki/Java_group_file#General_layout

Câu trả lời:


45

Chúng đến từ phiên bản lớp. Nếu bạn cố tải một cái gì đó được biên dịch cho java 6 trong thời gian chạy java 5, bạn sẽ gặp lỗi, phiên bản lớp không tương thích, có 50, dự kiến ​​49. Hoặc đại loại như thế.

Xem ở đây trong byte offset 7 để biết thêm.

Thông tin bổ sung cũng có thể được tìm thấy ở đây .


Có cách nào để lặp lại số phiên bản chính (phiên bản lớp) trực tiếp từ javac mà không cần sử dụng một lớp hiện có như thế javap -verbose MyClassnào không?
samis

Không, không có.
Stephen C


2

Nếu bạn gặp một số vấn đề về "trình biên dịch lỗi của tệp lớp", có thể giải quyết vấn đề này bằng cách thay đổi JRE của dự án thành đối tác thông qua Eclipse.

  1. Xây dựng đường dẫn
  2. Cấu hình đường dẫn xây dựng
  3. Thay đổi thư viện thành phóng viên của bảng mà người bạn hiển thị cuối cùng.
  4. Tạo "tệp jar" và biên dịch và thực thi.

Tôi đã làm điều đó và nó đã làm việc.


0

Nếu bạn có một tệp lớp tại build/com/foo/Hello.class, bạn có thể kiểm tra phiên bản java nào được biên dịch bằng cách sử dụng lệnh:

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

Ví dụ sử dụng:

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

Theo bảng trong OP, phiên bản chính 57 có nghĩa là tệp lớp được biên dịch theo cấp mã byte của JDK 13

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.