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

なんとなく気になったもので。誰かお願いします!!!!

A 回答 (2件)

完全には無理ですが、


javapコマンド
でできます。
コマンドについての詳細はJavaのドキュメントを参照して下さい。
javap -help
でヘルプも出ます。

他にもきっと逆コンパイルするツールなどあると思います。

あとは自分で作ったものなら構いませんが、
フリーのツールのクラスでも、逆コンパイルすることはライセンス違反になることもあるようなので、そこら辺は充分気をつけて下さい。
    • good
    • 0

Javaに限らず、コンパイルされたプログラムからソースを得ることを「逆コンパイル」いい、昔から行われています。


Javaにも逆コンパイルツールがあり、私は「Jad」を愛用しています。
Jad単体でも使えますが、Eclipseをお使いでしたら、より便利ですよ。

参考URL:http://www.atmarkit.co.jp/fjava/javatips/073ecli …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/21 22:41

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qclassファイルをjavaファイルへ。

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

Aベストアンサー

Javaの逆コンパイラを使えば、ある程度復元することは
できます。

参考URL:http://www.javacats.com/JP/articles/decompiler2.html

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

どーも、こんにちは。プログラミング初心者です。

現在Javaを使ってプログラムをしています。
JavaはJavaソースをコンパイルするとClassファイルが生成されるじゃないですか?
では逆に、ClassファイルからもとのJavaソースプログラムに変換する(?)、取り戻すことはできないのでしょうか???

もしかして無理なのかもしれませんが、これが出来ないとどうしていいか分かりません。
どうしても、ソースプログラムが見たいClassファイルがあるのです。
そんな状態なので困っています。
どなたか少しでもご存知の方は、ご一報ヨロシクお願いします!!

Aベストアンサー

プログラムからソースコードを生成するのを「デコンパイル」といいます。そのためのプログラムを「デコンパイラ」といいます。
 現在は、Jadの他にJodeなどのデコンパイラが出ていますし、Jadの応用ソフトもいろいろあるようです。デコンパイラで検索してみるといろいろと見つかりますよ。

参考URL:http://allabout.co.jp/career/java/closeup/CU20051206B/index.htm

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。


人気Q&Aランキング

おすすめ情報