- PR -

xxxx.classファイルのバージョン取得方法

1
投稿者投稿内容
こぶ
会議室デビュー日: 2006/11/14
投稿数: 11
投稿日時: 2007-01-26 09:11
こんにちは
コンパイルされた「xxxx.class」が
どのJAVAのバージョンでコンパイルされたかを
知る方法はあるのでしょうか?
Javaツール関連を探したのですが見つける事が
出来ませんでした。
ご存知の方おられましたら教えてください。

以上 よろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-26 10:24
クラスファイルは以下のような感じで始まります。
コード:
    |00 01 02 03 04 05 06 07
----+-----------------------
0000|CA FE BA BE 00 00 00 30



クラスファイルの先頭から5/6バイト目がマイナーバージョン
クラスファイルの先頭から7/8バイト目がメジャーバージョン

を示しています。このバージョンはクラスファイルのバージョンで、
JDKのバージョンとは一致しません。上記例では48.0です。

確かJDK1.5はクラスファイルのバージョンが49.0ですが、
どこかに対応表があるといいですね。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2007-01-26 10:31
JDK 1.4 のコンパイラ作成された JDK 1.1仕様のクラスファイルがあった場合は
1.4 と 1.1 のどちらを取得したいのでしょうか?

後者であればかつのりさんの回答の通りです。資料はこの辺でしょうか。
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80959

前者を得る方法は知りません。

[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2007-01-26 12:33 ]
こぶ
会議室デビュー日: 2006/11/14
投稿数: 11
投稿日時: 2007-01-26 14:12
ご回答ありがとう御座いました。

ご回答の内容を元にバージョンの
見つけ方がわかりました。

その他にも何か見つける方法が
ありましたら また、お教え願います。

以上 よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-26 16:02
javap でやるのが正攻法だと思っています。
$ javap -v Test
Compiled from "Test.java"
class Test extends java.lang.Object
SourceFile: "Test.java"
minor version: 0
major version: 49
1

スキルアップ/キャリアアップ(JOB@IT)