• ベストアンサー

classファイルを元に戻す

javaを勉強しているものなんですが、 一度コンパイルをしてできたclassファイルから もとのソースファイルを取り出す(元に戻す)ことは できるのでしょうか? なんとなく気になったもので。誰かお願いします!!!!

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

完全には無理ですが、 javapコマンド でできます。 コマンドについての詳細はJavaのドキュメントを参照して下さい。 javap -help でヘルプも出ます。 他にもきっと逆コンパイルするツールなどあると思います。 あとは自分で作ったものなら構いませんが、 フリーのツールのクラスでも、逆コンパイルすることはライセンス違反になることもあるようなので、そこら辺は充分気をつけて下さい。

その他の回答 (1)

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.2

Javaに限らず、コンパイルされたプログラムからソースを得ることを「逆コンパイル」いい、昔から行われています。 Javaにも逆コンパイルツールがあり、私は「Jad」を愛用しています。 Jad単体でも使えますが、Eclipseをお使いでしたら、より便利ですよ。

参考URL:
http://www.atmarkit.co.jp/fjava/javatips/073eclipse025.html
nilyannko
質問者

お礼

みなさんありがとうございます! 「逆コンパイル」という言葉があること自体 知りませんでした。検索したら結構出てきますね。 勉強になりました。

関連するQ&A

  • Classファイル → Javaソースプログラム

    どーも、こんにちは。プログラミング初心者です。 現在Javaを使ってプログラムをしています。 JavaはJavaソースをコンパイルするとClassファイルが生成されるじゃないですか? では逆に、ClassファイルからもとのJavaソースプログラムに変換する(?)、取り戻すことはできないのでしょうか??? もしかして無理なのかもしれませんが、これが出来ないとどうしていいか分かりません。 どうしても、ソースプログラムが見たいClassファイルがあるのです。 そんな状態なので困っています。 どなたか少しでもご存知の方は、ご一報ヨロシクお願いします!!

    • ベストアンサー
    • Java
  • classファイル

    プログラムを書いて、コマンドプロンプト上でコンパイルとしたところエラーが表示されたのですが、.javaとかかれたソースファイルのあるフォルダに.classというファイルが出来るのはなぜですか?エラーが発生したのでコンパイルは失敗したのですが。お願いします。

    • ベストアンサー
    • Java
  • javaのソースとclassファイルの単位について

    最近JAVAの勉強を始めました。 基礎的なことで恐縮ですが、JAVAのコンパイル単位を知りたいのですが。 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? 一つの*.javaファイルから、複数個のclassファイルができたり、複数の*.javaファイルから 一つのclassファイルができたりはしないんでしょうか? まだ、一つの*.javaから一つのclassファイルを作ったことしかないので、 申し訳ないですが、どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • classファイル内の変数名について

    2つのclassファイルをそれぞれ逆コンパイルして内容を確認したところ、 以下のように、それらしい変数名と機械的に振られたような変数名になっていました。 ・A.class → A.java  String atai = "aaa"; ← 元のプログラムと同じ変数名(atai)   ・B.class → B.java  Stinrg s1 = "aaa"; ← 機械的に振られている変数名(s1) コンパイル方法の違いで変数名が機械的になってしまうことがあるのでしょうか。 作業担当者が居なくなってしまって、当時の状況を確認することができません。 多分、同じソースファイルのはずなのですが、本当に同じ内容なのか 比較したいのに、微妙な違いがあるため比較ができなくて困っています。 引数も微妙に違っているようなので、それらしい変数名か機械的なものか どちらかに統一させてデコンパイルする方法があったら教えてください。 また原因も知りたいです。 アドバイスをお願いします。

    • ベストアンサー
    • Java
  • classが作られない

    javaをはじめて2日目です。以下がコンパイルしたところ、エラーがでなかったのですが、classが作られていません。何回か試したのですが、参考書には、 >javac Sample2.java とし、もう一度ディレクトリ名が出れば、コンパイル完了とあるのですが、classが作れていないので、実行が出来ません。 すみませんが、教えてください。 //画面に文字を出力するコード class Sample1 { public static void main(String args[]) { System.out.println("ようこそjavaへ!"); System.out.println("javaをはじめましょう!"); } } ちなみに保存名は、Sample2.javaです。

    • ベストアンサー
    • Java
  • classファイルについて

    お聞きしたいのですが、 コンパイルしたあとに作られるclassファイルを開いてみたら、 解読できない、文字化けのようになっています。 これはやっぱりおかしいのでしょうか?

    • ベストアンサー
    • Java
  • javaのCLASS ファイルについて

    いらないJAVAのプログラムが増えてきたので保存してあるフォルダを整理していたところ、誤って必要なものまで削除してしまったのですがCLASS ファイルはあります。CLASSファイルからJAVAファイルに戻すことはできますか?

    • ベストアンサー
    • Java
  • classファイルをjavaファイルへ。

    classファイルをjavaファイルへ戻すことってできるんでしょうか? もしできるのなら、やり方をお教えください。

    • ベストアンサー
    • Java
  • java .classのファイル形式

    javaのファイルに.java .classがありますが .javaのファイル形式はテキストファイルだと思いますが .classのファイル形式は バイナリファイルでしょうか? または実行ファイルでしょうか? または別のファイル形式でしょうか?

    • ベストアンサー
    • Java
  • java の *$1.class ファイルについて

    最近、JDK を使っていて思ったのですが、javac でコンパイルしたときに 変わったクラスファイルがでてくるのですが・・・ たとえば、 MainFrame.class の他にMainFrame$1.class があったりします。 これがないと実行できません。 これはいったいなんなんでしょうか? どうか、教えてください。 お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう