- ベストアンサー
【Eclipse】逆コンパイルでエラーが・・・なぜでしょうか?
いつもお世話になっております。 Eclipseをはじめてまだ6日目ほどです・・・ クラスファイルを逆コンパイルしようとおもい、JadとJadClipseを導入しました。 早速設定も終えて、いざ逆コンパイルをすると、 「クラス・ファイル・エディター」 「ソースが見つかりませんでした。」 「クラス・ファイルtest01.classに添付されるソースファイルがありません」 と表示があります。これはなにか間違えた設定を行っているからなのでしょうか?どうぞ宜しくお願いします。 使用しているのは「Eclipse3.2.0」「Jad1.5.8g」「JadClipse3.2.4」 になります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>「クラス・ファイルtest01.classに添付されるソースファイルがありません」 test01.classの素性が解らないので、残念ながら直接答えようがありません。 その前に、そもそも、JREシステムライブラリのクラスファイルのデコンパイルは できているのでしょうか? 例えば、java.awtパッケージ内のActiveEvent.classをダブルクリックしてみてください。 JDKのソースコードをインストールしていれば、以下(1)のように表示されるかと思います。 ------ (1) java.awt.ActiveEvent.classのソースコード ----------------------------- /* * @(#)ActiveEvent.java 1.14 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.awt; /** * An interface for events that know how to dispatch themselves. * By implementing this interface an event can be placed upon the event * queue and its <code>dispatch()</code> method will be called when the event * is dispatched, using the <code>EventDispatchThread</code>. * <p> * This is a very useful mechanism for avoiding deadlocks. If * a thread is executing in a critical section (i.e., it has entered * one or more monitors), calling other synchronized code may * cause deadlocks. To avoid the potential deadlocks, an * <code>ActiveEvent</code> can be created to run the second section of * code at later time. If there is contention on the monitor, * the second thread will simply block until the first thread * has finished its work and exited its monitors. * <p> * For security reasons, it is often desirable to use an <code>ActiveEvent</code> * to avoid calling untrusted code from a critical thread. For * instance, peer implementations can use this facility to avoid * making calls into user code from a system thread. Doing so avoids * potential deadlocks and denial-of-service attacks. * * @author Timothy Prinzing * @version 1.14 11/17/05 * @since 1.2 */ public interface ActiveEvent { /** * Dispatch the event to its target, listeners of the events source, * or do whatever it is this event is supposed to do. */ public void dispatch(); } ------ (1) ここまで ---------------------------------------------------------- そこで、JadClipseの設定で、Ignore existing source チェックボックスをONにすると (または、ソースコードをインストールしていない場合は、何もせずとも) これをデコンパイルして、以下(2)のように表示されるでしょう。 ------ (2) java.awt.ActiveEvent.classのデコンパイル結果 ------------------------ /*jadclipse*/// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) radix(10) lradix(10) // Source File Name: ActiveEvent.java package java.awt; public interface ActiveEvent { public abstract void dispatch(); } /* DECOMPILATION REPORT Decompiled from: C:\Program Files\Java\jdk1.6.0_10\jre\lib\rt.jar Total time: 20 ms Jad reported messages/errors: Exit status: 0 Caught exceptions: */ ------ (2) ここまで ---------------------------------------------------------- とりあえずは、これはてきているのでしょうか? ここまでできていれば、後は、test01.classの個別の問題です。 ですから、そのtest01.classファイルがないと、回答しようがありません。 (test01.classファイル名が小文字で始まっていますし、名前も意味不明なので その時点で、かなり怪しいのですが...)
その他の回答 (2)
- HarukaV49
- ベストアンサー率53% (48/89)
>色々調べてみたのですが、 そもそもEclipseの使い方を全く理解されていないとお見受けしました。 調べるといったような次元の問題ではありません。 >本当初心者で、プログラムをはじめようとは無謀にも程がある。 >と思われると思いますが、少しずつでも出来るようになればと考えています。 まずは、書店に行ってEclipseと名の付いた書籍を2~3冊程度買って来ましょう。 そして、それを一通り読み終えた段階で、話は始まります。 どんなに才能があっても、Eclipseの専門書を入手せずに、その使い方を包括的に 理解している人間は、この世の中に一人もいないと断言します。 >どうか、お知恵をお借しくださいm(__)m 多少のお金をケチって、ネットで事を済ませられれば金銭的に得した気分になれるかもしれませんが、 現実は、多大な人生(時間)を無駄使いすることになるでしょう。 >test01というのは、サンプルプログラムをネットででDLしました。 こんな名前のサンプルプラグラムは、全く利用(応用)価値が無い事をその名前が示しています。 仮に何かの目的を持ったテストプログラムならば、かならずその目的を名前に表すからです。 こんな意味不明な名前の付いたプログラムは絶対に実行すべきではないでしょう。 デコンパイルしてみる価値も全くないといえます。
お礼
おっしゃるとおりです。 ですが、人生の無駄って・・・(^^ゞw テストサンプルは、実際にアプリとして動くもので、よくある「HelloWorld」を表示させましょう!見たいなプログラムですw ソースファイルも実際はあるのですが、jarファイルを逆コンパイルしたく、 ただ、それを利用して、プラグインが機能するかをチェックするためにDLしたものです。 そのプログラムの内容がどうとか、こうとかではないんですよね(^^ゞ ありがとう御座いました! 近くに大きい本屋がないので、東京行ったときにでも自分にあった本でも探して見ます!
確証ありませんが、 コマンドプロンプトで動作するもの、 英語圏で作られたものは 1. パス中のスペース 2. 8bit以外の文字 3. 8+3形式以外のファイル名・フォルダ名 がトラブルの元になったりします。 >「ソースが見つかりませんでした。」 ということなので多分このあたりだと思われますが 該当しませんか?
お礼
回答ありがとう御座います。 確認してみたのですが、やはり、その辺りには問題はなさそうです・・(/_;) ありがとう御座います!
補足
申し訳御座いません。色々調べてみたのですが、パッケージエクスプローラにJREシステムライブラリを表示させる方法がわかりません。。。(/_;) test01というのは、サンプルプログラムをネットででDLしました。 その中にある、jerファイルのクラスファイルをEclipseでデコンパしたつもりでした。 iアプリを勉強しようと思っていたので、色々探していたらでてきました。 本当初心者で、プログラムをはじめようとは無謀にも程がある。と思われると思いますが、少しずつでも出来るようになればと考えています。どうか、お知恵をお借しくださいm(__)m 私も出来るだけ状況など詳しく説明したいと思います。