2016-03-27 9 views
0

いくつかのオープンソースプログラムのソースコードを投げていくうちに、いくつかのプロジェクトでソースコードファイル内に.classと.javaがあることに気付きました! .classは既にコンパイルされた.javaファイルであり、.classはバイナリですが、プロジェクトにコンパイル済みファイルとコンパイル済みファイルを含めることは可能ですか?はいの場合は、なぜそれを行うのですか?メリットは何ですか?.classクラスと.javaクラスを同じソースコードパッケージに含めることは可能ですか?

長い話題:さまざまなプロジェクトでテストクラスを勉強しようとしています。いくつかのプログラムは(ビルド)フォルダの下にテストファイルを持っています。拡張子は.classです。これらのクラスは、テストパッケージの下にあるテストクラス(.java拡張子)と動作が異なりますか?とにかくそれらを逆コンパイルするには はありますか?

ありがとう

+0

あなたはどのようにコードを見ることができますどんなコメントでも動作します。 –

答えて

1

クラスファイルとJavaファイルは、パッケージ構造で定義されたサブディレクトリ構造と同じものを共有します。

eclipseのようなIDEを使用すると、クラスファイルを対応するソースファイルと同じフォルダまたは別の(重複した)フォルダ構造に入れることができます。

あなたが選んだこれらのオプションのどれが味の問題か、私は言うでしょう。

+0

しかし、なぜそれらのファイルをソースコードファイルの間に置くことさえすればよいでしょうか? ちょうど.javaファイルがないのはなぜですか?または、プロジェクトファイル全体をコンパイルして.classですか? – user5923402

+0

@ user5923402:GITやSubversionのようなバージョン管理システムにチェックインされているファイルを "プロジェクト"といいますと、クラスファイルを追加する意味がありません。しかし、これはディレクトリ構造とは関係ありません。 –

+0

実際には、私がダウンロードした完全なソースコード(.rar)と、それを解凍してサブフォルダ間のブラウジングを開始しました! デコンパイルする方法はありますか? – user5923402

1

'-d'オプションを指定せずにJavaコンパイラ(javac)を実行すると、実際に生成されたクラスを配置する場所を指定することができます。デフォルトでは、ソースファイル。

javacコンパイラとjvmランチャ(java)が同じファイル拡張子を調べていないため、これを行うのに競合はありません。

しかし、それは一般的にプロジェクトの下、別のフォルダに生成されたクラスファイルを配置することがベストプラクティスと考えられている:あなたは、元のソースへのアクセス権を持っている場合は、クラス、ビンなど

関連する問題