アプリ版:「スタンプのみでお礼する」機能のリリースについて

業務システム(の作成のためのフレームワーク)を解析することになりました。
ソースコードが手に入るものと、クラスファイルしかないクラスがあります。
JudeをつかってUMLのクラス図にしてみたら、クラス数が多いため文字が小さく読みづらく
なってしまいました。各クラスのメソッド一覧とシグネチャがわかればいいので、
クラス図ではなく一覧をテキストで出力するツールを作ろうと思っています。

すると.class や .jarを読む必要があるのですが、J2SE1.4のどのクラスを使うと
できるでしょうか。リフレクション?と思ったのですが、ツールの実行時に読み込まれる.class や .jarではないので
リフレクションでは無理でしょうか?

ヒントだけでもいいのでお願いします。

A 回答 (5件)

javapコマンドで逆コンパイルしてみては?


(ライセンスの問題に躓きそうですね…)
    • good
    • 0
この回答へのお礼

逆コンパイルはjadしか使ったことが無かったのですが、
javapコマンドなら、今回の目的に一番近い出力が得られそうです。
ありがとうございました。

お礼日時:2005/06/04 00:38

>クラスローダを使うには、基本クラスの分もすべてそろっていないとだめなのでしょうか


だめですね。親クラスが入っているjarや、nativeメソッドが使うライブラリ、静的に読み込まれる設定ファイルなどをすべて貰って来ないとエラーになります。

無理ならclassファイルのバイナリを解析しないといけません。
・Jadを使う
Jadはディレクトリ内のファイルなどをまとめてデコンパイルできるはずです。
jarを解凍してディレクトリ内のclassファイルを一気にデコンパイルすれば、ソースは手に入ります。
・Judeでソースの雛形を出力
クラス図からソースの雛形を出力できるはずなので、それをコンパイルするなり、
ソースファイルのメソッド宣言を拾うなりする。
・自分で解析ツールを作る
これは「がんばってください」としか言い様が…

なんにせよ、jarも全てそろっていないと解析や開発に出る影響が大きいのでは?多少上司などにごねてでも調達させた方がよさそうです。

この回答への補足

>jarも全てそろっていないと解析や開発に出る影響が大きいのでは?
それもそうですね。ドキュメント類がほとんど無いので、最初は全体像を把握するためにJudeでクラス図を起こすところからはじめたのですが、結局細かいところを調べるには動かせないと困りますね。
足りないJARはWebSphere関連のようなので、何とかならないか相談してみます。

ソースから全体像を把握することって今後もあると思うので、ツール化したいところですが、自信がなくなってきたので今回はJadとjavapとJudeでなんとか解析してみます。

皆様ありがとうございました。

補足日時:2005/06/05 22:15
    • good
    • 0

ツールを作るのなら、




.jarファイルから読むのはその分面倒なので、classファイルだけにするのがいいと思います。(.jarファイルはあらかじめ解凍しておく)


で、クラスファイルから情報を取得する方法ですが、

1.ClassLoader(のカスタマイズ)を使って、Classオブジェクトを生成。
(Classファイルをbyte配列に格納し、実行するとClassオブジェクトを取得できる)

2.リフレクションを使ってClassオブジェクトからそのオブジェクトの情報を取得する。


となります。

リフレクションで情報を取って表示するのは結構面倒ですよ。

企画倒れにならないことを祈ります。

この回答への補足

alpha.jar に Sub.class が入っているとして、
SubクラスはSuperクラスを継承しています。

今回、実行に必要なすべてのJARがそろっていないため、Super.classが手元にありません。

URLClassLoaderを使ってみたら、Subクラス のClassオブジェクトを取得しようとしても Super.classに関してjava.lang.NoClassDefFoundError例外が発生してしまいました。
クラスローダを使うには、基本クラスの分もすべてそろっていないとだめなのでしょうか。

補足日時:2005/06/04 11:53
    • good
    • 0
この回答へのお礼

ClassLoaderのサブクラスにURLClassLoaderというのを見つけました。JARファイルも読めそうなので、この線から挑戦したいと思います。

ありがとうございました。

お礼日時:2005/06/03 22:24

Eclipseで開くのもいいかもしれません。

    • good
    • 0
この回答へのお礼

クラスの数が少なければEclipseが一番手っ取り早いのですよね。ところが いかんせんクラス数がおおいので、全体を把握するために、各クラスの継承関係とメソッドのシグネチャだけみられるようなものを模索中です。

(クラス図やシーケンス図も一緒に提供されていたらそれだけで解決なんですが・・・)

お礼日時:2005/06/03 22:30

逆コンパイルについて


過去にも質問があったので紹介します。
http://okweb.jp/kotaeru.php3?q=1343563

参考URL:http://okweb.jp/kotaeru.php3?q=1343563
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!