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

A 回答 (1件)

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



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

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

参考URL:http://www.geocities.co.jp/SiliconValley-Oakland …
    • good
    • 0

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

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

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

Qコンパイルした後 java (classファイルの名前) が実行できない

すみません。本当につまらない質問かもしれませんが
コンパイルまではDOS窓でできるんですが。できたCLASS
ファイルを java (できたclassファイル名) を実行しよう
としても、
Exception in thread "main" java.lang.NoClassDefFoundError: (できたファイルの名前)
と表示されてしまい、まったく実行できません。
これはどうしたら実行できるのでしょうか?
なお、最新版のSDKとJava 2 Runtime Environmentはインストールしています。
どうかお願いします。

Aベストアンサー

1. .classまでクラスファイル名つけてませんか?
2. カレントディレクトリがclassファイルのある場所にあるかまたはクラスパスがclassファイルのある場所に追加されていますか?
3. クラスファイル名間違ってませんか?
4. CLASSPATHを設定した場合、.(現在のディレクトリ)を指定していますか?
5. 2番目の回答者の方と同じです、ファイル名とクラス名一致してますか?

JDKが古いバージョンの物も必要というのはちょっと聞いたことがないですが・・・。

QJDK5.0のjavacが見つかりません

J2SDK1.4.2から1.5にアップデートを試み、下記Sunのサイトから、
http://java.sun.com/j2se/1.5.0/ja/download.html
JDK 5.0 Update 10
をダウンロードし、インストールを実行しました。
これには、JREとコンパイラやデバッガのようなコマンド行開発ツールが含まれるとあります。

ところが、インストールディレクトリ直下にのbin ディレクトリには、コンパイラ javac がみあたりません。
1.4.2まではbin下のjavacを使用していたのですが、構成が変わったのでしょうか。またはインストールしたファイルが間違っていたのでしょうか。

よろしくお願いいたします。

Aベストアンサー

http://oshiete1.goo.ne.jp/qa1855264.html私も同様の現象がおき、ここで質問しました。JDK5.0UPDATE6のころです。

何回か試したのですが、なぜかbinフォルダにjavac.exeがなく、コンパイルできませんでした。jdk1.4のころまでは異常なくダウンロードできたんですが。。

私は書籍を1冊買い、付録のCDでインストールしました。現在は他のバージョンも出ているみたいなので、そっちをインストールしたらどうでしょうか?

では、がんばってください。

Qjavaは実行できてjavacは実行できない

現在Javacコマンドを使ってコンパイルしようとしているのですが、「内部コマンドまたは~」とでてコマンドが実行できません。
ただしjavaコマンドは実行できます。versionは1.6.0_27です。

以上ですがなにか気づいた点があれば、助言していただけると幸いです。

Aベストアンサー

>補足を書いていてきづいたのですがPath最後へんでしたね。
>$JAVA_HOME\bin;
>に修正しました。がjavacは相変わらずです。

Windowsなら…
%JAVA_HOME%\bin;
じゃないですか?

ただし、JAVA_HOMEが
C:\Program Files\Java\jdk1.6.0_27
となっていれば…ですが。
# セミコロンで終わらない。

QJDK1.6(Windows版) jar/javacコマンドが見当たりません

こんばんは。

java.sun.comから、以下のJDK1.6(Windows版)を入手し、インストール
しましたが、jar/javacコマンドが見当たりません。

jdk\bin配下や、jre\bin配下も確認しましたが見当たりませんでした。

jar/javacコマンドは、jdk1.6から無くなったのでしょうか?

ご存知の方、アドバイスお願いします。


Windows Platform - Java(TM) SE Development Kit 6 Update 1
jdk-6u1-windows-i586-p.exe

Aベストアンサー

少なくともコマンドがなくなっていることはありません。
インストールに失敗しているか、インストールしたディレクトリ以外の場所を参照しているか、ではないでしょうか。

java -version
コマンドを発行し、インストールしたソフトウェアバージョンを確認して下さい。

Qjava:一括コンパイル後、実行できない(メインクラスXXが見つからない、ロードできない)

Javaを勉強している初心者です。現在「スッキリわかるJava入門 第2版」という本で勉強をしているのですが、第8章のオブジェクト指向でインスタンスを作るクラスファイルとメインクラスファイルを本の通り作成後、コンパイルしたのですが、実行すると
「メインクラスXXXが見つからなかったか、ロードできませんでした」というエラーとなります。原因が全く分かりません。どなたかご教授頂けないでしょうか。

ちなみに作成したjavaファイルは下記の2つになります。
①Main.java
public class Main {
public static void main(String[] args){
Hero h = new Hero();
h.name = "ミナト";
h.hp = 100;
System.out.println("勇者" + h.name + "を生み出しました!");
h.sit(5);
h.slip();
h.sit(25);
h.run();
}
}
②Hero.java
public class Hero{
String name;
int hp;
void attack(){}
void run(){
System.out.println(this.name + "は、" + "逃げ出した!");
System.out.println("GAME OVER");
System.out.println("最終HPは"+ this.hp + "でした。");
}
void sit(int sec){
this.hp += sec;
System.out.println(this.name + "は、" + sec + "秒座った!");
System.out.println("HPが" + sec + "ポイント回復した。");
}
void slip(){
this.hp -= 5;
System.out.println(this.name + "は、" + "転んた!");
System.out.println("5のダメージ!");
}
void sleep(){
this.hp = 100;
System.out.println(this.name + "は、眠って回復した!!");
}
}

これら2つのファイルを同時にコンパイルするとエラー無くClassファイルが作成されますが、それぞれ別にコンパイルすると①のMain.javaのコンパイル時に
「”Hero h = new Hero();」の部分で"シンボルが見つかりません"というエラーになります。
Heroについては②Hero.javaという別ファイルで定義しているからだと思いますが、実行時にエラーが出るのは別々にコンパイルした時にこのようにエラーが出ることが要因なのでしょうか。

ちなみに、①と②のファイルは同じフォルダ内に保存しており、コマンドプロンプトでcdを当フォルダに指定して実行を試みていますが、これが要因なのでしょうか。。

Javaを勉強している初心者です。現在「スッキリわかるJava入門 第2版」という本で勉強をしているのですが、第8章のオブジェクト指向でインスタンスを作るクラスファイルとメインクラスファイルを本の通り作成後、コンパイルしたのですが、実行すると
「メインクラスXXXが見つからなかったか、ロードできませんでした」というエラーとなります。原因が全く分かりません。どなたかご教授頂けないでしょうか。

ちなみに作成したjavaファイルは下記の2つになります。
①Main.java
public class Main {
public...続きを読む

Aベストアンサー

やってみましたが、このソースで
コンパイル、実行は全く問題ないですね。

やり方は以下の通り。
ソースのあるフォルダに cd して。

① コンパイル
javac Main.java
# 参照しているクラスは自動的にコンパイルされます。
② 実行
java Main


人気Q&Aランキング

おすすめ情報