- PR -

javac ターゲットオプションについて

1
投稿者投稿内容
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2006-11-15 19:54
マニフェストファイルを見れば
どのJDKのバージョンでコンパイルされたかわかります。

例えば以下の場合。
@JDK1.4のjavacでコンパイルされたもの(targetオプションなし)
AJDK1.4のjavacでコンパイルされたもの(-target="1.3"を指定)

それぞれを見分ける方法ってありますか?
(ファイルサイズを比較していましたが、ソースによっては同じサイズになってしまいます。)
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-11-15 21:29
その目的にぴったりなツールは知りませんが、
Jakarta BCELで解析すれば可能では?

org.apache.bcel.classfile.JavaClassから、
クラスファイルのバージョンは取得できるみたいです。

targetのバージョンとクラスファイルのバージョンの
対応関係は調べないといけないですけど。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-11-15 22:26
javap でクラスのバージョンがわかります。

$ javac -source 1.3 -target 1.3 Test.java
yusukey@yusukey:~$ javap -verbose Test
Compiled from "Test.java"
public class Test extends java.lang.Object
SourceFile: "Test.java"
minor version: 0
major version: 47
.....

$ javac -source 1.4 -target 1.4 Test.java
$ javap -verbose Test
Compiled from "Test.java"
public class Test extends java.lang.Object
SourceFile: "Test.java"
minor version: 0
major version: 48
.....

84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2006-11-16 09:21
インギさん、あしゅさん
おかげさまで、目的を達成することができました。
どうもありがとうございました。
1

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