Javaクラスファイル形式のメジャーバージョン番号のリスト?


174

別の投稿で、この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

回答:


46

これらはクラスバージョンからのものです。Java 5ランタイムでJava 6用にコンパイルされたものをロードしようとすると、エラーが発生し、互換性のないクラスバージョンが50になり、49と予想されます。または、そのようなものです。

詳細について、バイトオフセット7を参照してください。

追加情報もここにあります


次のような既存のクラスを使用せずに、メジャーバージョン番号(クラスバージョン)をjavacから直接エコーする方法はありjavap -verbose MyClassますか?
samis

いいえ、ありません。
スティーブンC


2

「クラスファイルのエラーコンパイラ」について問題がある場合は、Eclipseを介してプロジェクトのJREを対応する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.