JADでNSG 2を逆コンパイルして自分で転載しやすいように修正する


JADでNSG 2を逆コンパイルして自分で転載しやすいように修正する
2009年03月23日月曜日08:59
NSGは非常に可視化されたns 2シーン作成ソフトウェアであり、以下を参照してください.http://wushoupong.googlepages.com/nsg
しかしNSG 2で生成されたtclは比較的堅苦しい固定的な枠であり,実際のns 2の拡張シミュレーションでは,生成されるたびに自分の要求に応じてさらに半日変更される.ワークロードを減らすためには,2つの方法がある.
1).修正を追加する部分をonenoteに一時的に保存し,以降tclファイルを生成するたびにctrl-c&ctrl-vで大法でクリアする.変更するのがこまごましていて,多くのブロックを分けてしまうと面倒になる.
2).nsg 2が生成したtclを直接自分のニーズに合わせて、自動的に自分のニーズの部分tclコードに変更したり、追加したりすることができます!すなわち、nsg 2を逆コンパイルすることによって、自分のためにカスタマイズされたnsg 2を作成する...;)以下を参照してください.
 
1.まずnsg 2.jarを解凍して、META-INFとnsgの2つのディレクトリを得て、1つの臨時のclassディレクトリの中に置きます
jar -xf nsg2.jar

2.JADの最新バージョンをダウンロードし、JADで対応する.classをjavaに逆コンパイルし、classディレクトリに入力します.
jad -o -r -sjava -d src nsg/**/*.class

これにより、srcディレクトリにはjavaソースファイルがすべて含まれています.たくさんありますよ..><
特に$3.javaのようなファイルがたくさん出てきて、匿名の内部クラスがたくさん使われているようです.
4.javaソースファイルのうち、重要なのはいくつかだけで、私たちが関心を持っていることです.
ParameterDialog.javaはそのparameterのダイアログボックスの内容を保存して、対応する良い属性を見て大きく変更して特改すればいい、各種パラメータ.
TCLManager.javaはそのtclファイルを生成する肝心な場所で、中にはtclテンプレートのフレームワーク全体が埋め込まれていて、自分のニーズに合わせて変更すればいいです.とてもeasy~!直したら自分のニーズに合わせて指定フォーマットのtclを出力できるようになりました~.
SceneManager.javaは、rangeを表示するか、接続を表示するかなど、シーンのコンテンツデータに関するものである.
SceneVirtualizer.javaはシーン表現で、rangeを描いたり、linkを描いたり、いろいろなものを描いたり...
5.変更後、保存、再コンパイル.srcディレクトリ、すなわちnsgの上位レベルディレクトリに入力
javac nsg*.java

エラーが発生します.作者のコンパイラかもしれないので、jadは逆コンパイルして、再コンパイルして、互換性の問題があるでしょう.javaに対しては特会ではありません.しかし、エラーが発生したにもかかわらず、相応の.classを生成しました.
6.再コンパイルされた関連する.classファイルのコピーをclassのnsgディレクトリに上書きし、元のものを上書きする.
7.最後にclassディレクトリに、全体をjarパッケージから新規作成します.
jar cvfm nsg2.jar META-INFMANIFEST.MF nsg

これでOKです.
注:作者が自分のコードを公開していないのはopensourceに自分の考えと原因があるに違いない.まずnsg 2の作者に感謝しなければならない.しかし、コードを公開できれば、みんなが枝葉を添えて機能を改善するのに便利だ.きっとnsgの制作をもっと促進するに違いない.ns 2がqualnetより最大の不足は可視化されたシーン制作インターフェースがないことだ.うん.フラッシュした.シミュレーションを続けよう...