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

まだ、一つの*.javaから一つのclassファイルを作ったことしかないので、
申し訳ないですが、どなたか教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

基本的にファイルには関係なく ソースに有るclassごとに *.class


のファイルができます。
なので、一つのjavaファイルの中に複数のクラス(インナークラスも含め)
が有ればその数分classファイルができます。

ただこれらのファイルを jarファイルにまとめてしまえば *.jar
のファイル一つにもになりますが。
ファイル内に
class クラス名1{
}
class クラス名2{
}

があれば クラス名1.class と クラス名2.class
のファイルが出来ます。
    • good
    • 0
この回答へのお礼

おお。本当っだっ。へぇぇ。

ありがとうございます。とても助かりました。

お礼日時:2001/04/07 01:58

>「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。

→つまり1対1になる。」
ということですね。

▼ その通りです。shigeki-yy さんのおっしゃる通りですね。
  私が曖昧な書き方をしていたもので、すいませんでした。

> ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。

▼ では。javaのお勉強、頑張ってくださいね!
    • good
    • 0
この回答へのお礼

わざわざありがとうございました。

VBにすっかり慣れてしまっているので、すべてのOS上で動くことをコンセプトとしたJAVAは知れば知るほど魅力的です。

 今は、仕事でJAVAで行っている開発資産を管理することになるので、ぼちぼちと勉強しているところです。せっかく始めたので、いずれはiアプリを作ることが目標です。

今後ともよろしくお願いします。

お礼日時:2001/04/08 00:58

> 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか?


> 一つの*.javaファイルから、複数個のclassファイルができたり、

これに関しては先のgookenさんの答えておられる通りです。
ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。

また、インナークラスの場合には
(MyClassという名前のクラス内で定義されたインナークラスの場合)
MyClass$1.class, MyClass$2.class ...
というような名前になりますね。


> 複数の*.javaファイルから一つのclassファイルができたりはしないんでしょうか?

こちらはできないはずです。
    • good
    • 0
この回答へのお礼

本当だ。

public class Test44 {
*
*
}
public class Test45 {
*
*
}

で、コンパイルすると、
「Test44.java:21: クラス Test45 は public であり、ファイル Test45.java  で宣言しなければなりません。
 public class Test45 {
  ^              」

というメッセージが出ます。

「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」
ということですね。

とても助かりました。ありがとうございます。

お礼日時:2001/04/07 14:30

このQ&Aに関連する人気のQ&A

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

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

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

Qjava の *$1.class ファイルについて

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

Aベストアンサー

 MainFrame.javaの中でanonymous class(無名クラス/匿名クラス)を定義していますね?

 Javaには「一つのクラス定義=一つのクラスファイル」という原則があります。

 MainFrame.javaの中で複数のクラスを定義しているわけですが、anonymous classは「$」が付いたクラスファイルになります。

参考URL:http://www.geocities.co.jp/SiliconValley-Oakland/4287/java49.html

Qimportするには java.io.*; import org.apache.log4j.*;

EclipseでJavaの開発をしています。
import java.io.*;
import org.apache.log4j.*;
がエラーになります。
多分ライブラリーに入れる必要があるのだと思いますが、その方法について
教えて下さい。宜しくお願い致します。

Aベストアンサー

プロジェクトフォルダを右クリック→「ビルド・パス」→「ビルド・パスの構成」
あるいはプロジェクトフォルダを右クリック→「プロパティ」→「Javaのビルド・パス」

で、ライブラリがプロジェクトフォルダ配下に存在しているなら「Jarの追加」
プロジェクトフォルダ以外の場所にあるなら「外部Jarの追加」で追加できます。

ちなみにjava.ioはJ2SEに含まれているので(「JREシステムライブラリ」があるはずなので)
追加しなくても良いです。

Qonmouseover="this.className=をjsファイルにまとめて、指定する場所はid=menu1,2~....かclass=menuで統一したい

<div class="font1 bor1"
onmouseover="this.className=this.className+' bgcol txcol'"
onmouseout="this.className='font1 bor1'">
というものがあったとしてこれを
<div id="menu1・・・2・・・">だけにして
onmouseover=~をjsに略記できるようにしたいのですが
何かいい手はありませんか?

idで指定できる版のほかに
classで指定できる版があるとうれしいです。classだと難しいでしょうか?

また、こちらももしできればでいいのですが、this.classNameを
指定IDのclassName等もできるのでしょうか?

質問に不足があれば答えられる範囲で答えます。よろしくお願いします。

Aベストアンサー

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");
$(this).removeClass("txcol");
});

});
</script>

$('.font1') という部分を $('#font1') と書けば id="font1" の要素に対する設定になります。 

jQueryの解説、入手先等は
http://www.openspc2.org/JavaScript/Ajax/jQuery_study/index.html
とか、参考にしてください。

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");...続きを読む

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

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

Aベストアンサー

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

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

Q*.jarファイルを逆コンパイルできなくする方法

*.jarファイルを逆コンパイルできなくする方法

フリーソフトで*.jarを逆コンパイルものがいくつかあります。
*.jarを逆コンパイルできなくする方法はありませんでしょうか。

ご存知の方がおられましたら教えてください。
よろしくお願いいたします。

Aベストアンサー

有名どころだと
http://proguard.sourceforge.net/
かしら。
  


人気Q&Aランキング

おすすめ情報