- PR -

5.0で記述した.javaファイルを1.3環境で実行したい

1
投稿者投稿内容
tsutomu
会議室デビュー日: 2006/10/13
投稿数: 5
投稿日時: 2006-10-13 20:17
はじめましてtsutomuと申します。

5.0の書式で記述した.javaファイルをなんとか
1.3上で実行出来ないかと難儀しています。

1.3の環境で5.0の.javaファイルをそのまま
コンパイルしようとすると当然のように
「enumが解決出来ない」、「java.util.loggingが無い」
などと怒られてしまいます。

対策として以下の2つの方針を考えました。

[対策1]デコンパイルで1.3の.javaを取得

一旦5.0の環境でコンパイルし、.classになったファイルを
デコンパイルして1.3の.javaファイルを取得し、
その.javaファイルを1.3で再コンパイルする。

※↓のサイトなどで5.0の.classをデコンパイルして、5.0特有の
記述が無くなっている様子が見受けられるのでデコンパイルで
1.3互換の.javaが取得出来るのかな?という発想が発端です。

http://journal.mycom.co.jp/column/java/
http://www.javaworld.jp/technology_and_programming/-/18161.html


[対策2].classの追加で1.3でコンパイル

1.3の環境に1.4から追加されたclassを次々CLASSPATHに
追加していって、コンパイルエラーを無くす。

※勘です。。。


最初に1.の方針で調査し、jad1.5.8gを使用してデコンパイルを
以下のコマンドで実行したところ

jad -o -r -sjava -dsrc **/*.class

コンソールに以下のメッセージがいくつか表示され
(yahoo翻訳によると「方法チェックにおいて全ての例外ハンドラーを
分解することができるというわけでありませんでした」)

Couldn't resolve all exception handlers in method check

デコンパイルされた.javaファイルには唐突に

exception;

という行が存在してコンパイルは1.3でも5.0でも通りませんでした。
jadを実行するオプションがまずかったのか、そもそもjadには
向かない書式があるのか判断が付かなく困っています。

今後の調査の方針ですが

1.
[対策1]のままjadのオプションを調査する。

2.
[対策1]jad以外のデコンパイルツールを調査する。

3.
[対策2]に方針を切り替えて1.3環境のCLASSPATHに次々.classを追加する。

とどの方向に向かったものかと現状悩んでいます。
(そもそもの[対策1]と[対策2]の着目にも自信が無いのですが。。。)

アドバイス、ご意見などありましたらよろしくお願いします。



[ メッセージ編集済み 編集者: tsutomu 編集日時 2006-10-13 20:22 ]
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-10-13 21:20
[対策3]5.0の環境を構築する。

これが正解だと思います。 
1.5で作成したものが1.3で互換性がある内容とは限りません。
可変長変数とかいい例かと思います。

[対策3]5.0の環境を構築する
が選べない理由は分りませんが
実行不可能なものがある限り
ソースを書き直すかしないといけません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-10-14 01:17
JDK1.4対応とあるので1.3はどうなのかわかりませんが、こんなのがあります。
http://retroweaver.sourceforge.net/
-target jsr14 でも JDK1.4 までですね。うーん残念。
http://yusuke.homeip.net/diary/2005/10/19/1129706786000.html

答えになってなくてゴメンナサイ。
tsutomu
会議室デビュー日: 2006/10/13
投稿数: 5
投稿日時: 2006-10-16 12:24
あすかさん、インギさん、
ご返信ありがとうございます。

>あすかさん
現状、1.3環境以外に変更するころが出来ません。
そうするとやはりソースの書き直しになりますか。。。

>インギさん
こういったツールの存在は知りませんでした。
貴重な情報ありがとうございます。
1.4環境を構築出来ればこのツールが使えそうですね。

調査を継続して、状況が変わったらまた報告させて頂きます。
tsutomu
会議室デビュー日: 2006/10/13
投稿数: 5
投稿日時: 2006-10-18 15:56
>インギさん

教えて頂いたRetroweaverの1.2.5で
-target 1.3を指定してみたところ
変換後のjarを1.3環境で動作させる
ことに成功しました。
#最新の2.0Beta2はBeta版のためか
#変換後の実行で失敗しました

大変助かりました。
本当にありがとうございました。

[ メッセージ編集済み 編集者: tsutomu 編集日時 2006-10-18 15:57 ]
1

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