• ベストアンサー

javaのソースとclassファイルの単位について

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

  • Java
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • gooken
  • ベストアンサー率25% (34/132)
回答No.1

基本的にファイルには関係なく ソースに有るclassごとに *.class のファイルができます。 なので、一つのjavaファイルの中に複数のクラス(インナークラスも含め) が有ればその数分classファイルができます。 ただこれらのファイルを jarファイルにまとめてしまえば *.jar のファイル一つにもになりますが。 ファイル内に class クラス名1{ } class クラス名2{ } があれば クラス名1.class と クラス名2.class のファイルが出来ます。

shigeki-yy
質問者

お礼

おお。本当っだっ。へぇぇ。 ありがとうございます。とても助かりました。

その他の回答 (2)

  • stardust
  • ベストアンサー率44% (8/18)
回答No.3

>「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 ▼ その通りです。shigeki-yy さんのおっしゃる通りですね。   私が曖昧な書き方をしていたもので、すいませんでした。 > ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 ▼ では。javaのお勉強、頑張ってくださいね!

shigeki-yy
質問者

お礼

わざわざありがとうございました。 VBにすっかり慣れてしまっているので、すべてのOS上で動くことをコンセプトとしたJAVAは知れば知るほど魅力的です。  今は、仕事でJAVAで行っている開発資産を管理することになるので、ぼちぼちと勉強しているところです。せっかく始めたので、いずれはiアプリを作ることが目標です。 今後ともよろしくお願いします。

  • stardust
  • ベストアンサー率44% (8/18)
回答No.2

> 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? > 一つの*.javaファイルから、複数個のclassファイルができたり、 これに関しては先のgookenさんの答えておられる通りです。 ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 また、インナークラスの場合には (MyClassという名前のクラス内で定義されたインナークラスの場合) MyClass$1.class, MyClass$2.class ... というような名前になりますね。 > 複数の*.javaファイルから一つのclassファイルができたりはしないんでしょうか? こちらはできないはずです。

shigeki-yy
質問者

お礼

本当だ。 public class Test44 { * * } public class Test45 { * * } で、コンパイルすると、 「Test44.java:21: クラス Test45 は public であり、ファイル Test45.java  で宣言しなければなりません。  public class Test45 {   ^              」 というメッセージが出ます。 「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 とても助かりました。ありがとうございます。

関連するQ&A

  • classファイルを元に戻す

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

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

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

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

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

    • ベストアンサー
    • Java
  • Classファイル → Javaソースプログラム

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

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

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

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

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

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

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

    • ベストアンサー
    • Java
  • javaのclassファイルが出来ません。

    javaを独学で勉強しようと思い本を購入いたしました。 インストールしていざjavac ファイル名.javaで実行してもclassファイルが できません。何度も試してみたのですが(涙) 上記の様に実行してみたら、下記のようなエラーがでます。 エラーの内容が分かりません。 よろしくアドバイスお願い申し上げます。 Exception in thread "main"java long.NoclassDefFoundError; com/sun/tools/javac/main

    • ベストアンサー
    • 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

専門家に質問してみよう