javaのシステムで既にsourceファイルが無いシステムの修正が必要な状況に陥った時、・・・sourceファイルが無い状態に陥った事自体アレなんだが、そういう時、さてどうしようと。
1ファイルの修正で何とかなりそうだったのが、たまたま運が良かったんだが、逆コンパイルしてうまくいった。
jadの入手
まずは逆コンパイルする為のjadの入手。
eclipse版もあるようだけど、今回は一ファイルのみだったので単体のjadのみ入手。
Jad - the fast JAva Decompiler
ここからjadls158.zipを取ってきて、解凍。
で、
jad Sample.class
を実行すれば、Sample.jadが出来上がる。マルチバイトがある場合はjad -8 Class名とやるといいという記事があったが、つけても結局unicodeに変換されてた。ここは手直しが必要か。
中を開いてみると、・・・sourceがきれいになってる。import文や、if条件など、無駄が取り除かれてるのでびっくり。
ん、イケそうだ。で、必要な修正を行って、再度javacでコンパイル。
と、ここでclasspathの問題に色々悩まされたが、ちゃんとclasspathを設定していけば問題なくコンパイルできた。
/usr/local/java/bin/javac \
-classpath \
/opt/webapps/WEB-INF/classes/:\
/opt/webapps/WEB-INF/lib/need_lib.jar:\
/usr/local/java/:/usr/local/java/jre/:\
/usr/local/tomcat/common/lib/servlet-api.jar \
Sample.java
大体こんな感じ。該当のwebアプリのclasspathとjava、servletのpath等をしっかりやればいいみたい。
とはいえ、これはコンパイルするsourceの内容によるので、エラー→トライの繰り返しだけど。
参考URL
http://kapi.jp/kapi_blog/226
2009年04月18日
関連カテゴリ JAVA