• ベストアンサー
  • 困ってます

コンパイルはうまくいったのですが…

  • 質問No.1074036
  • 閲覧数173
  • ありがとう数2
  • 回答数3

お礼率 76% (16/21)

> 全くの初心者です。お手数ですが、よろしくお願いします。
>
> 実行時に下記エラーが表示されます。
> Exception in thread "main"java.lang.NoClassDefFoundError:test
>
> ・OS:windows XP
> ・JAVA 2 SDK 「1.4.2_06」
> ・javaファイル「test.java」(C:\ja)
> ・環境変数
> "Path"
> 「%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\j2sdk1.4.2_06\bin」
>
> ※実行がうまくいかなかったので、「CLASSPATH」を新規に設定して
> みました。正直自信がありません。
> 「.;C:\ja\test;%CLASSPATH%」
>
> 以上なのですが、どこがいけないかおわかりになりますでしょうか?よろしくお願いします。

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

  • 回答No.3
  • ベストアンサー

ベストアンサー率 50% (604/1207)

> test.javaには何も入力してありません。

え、じゃあ何をどうやってコンパイルしたのですか?

> ……というように文字化けしています

classファイルはテキストエディタで開いて見るためのものではありません。重要なのはclassファイルの中身ではなくて、ソースファイル(javaファイル)に書かれている内容です。

test.java ファイルをコンパイルしたら Print.class ができたということではないのですか? だとしたら、test.java には Print クラスに関する記述が書かれているはずです。それとも test.java は本当に空っぽのファイルなのですか? 何もプログラムを書いていないのにいつの間にかクラスファイルができているなんてありえませんが……

test.java には Print クラスに関する記述が書いてあって、それを
> javac test.java
でコンパイルしたら Print.class というファイルができた。そして、そのコンパイルされたプログラムは
> java Print
で実際に実行できる。
何か違いますか?
お礼コメント
9q9q9q9q

お礼率 76% (16/21)

UKY様のおっしゃるとおりでした。私が、test.javaの中身を削除していただけでした。基礎からしっかり勉強して以降と思います。本当にありがとうございました!!
投稿日時:2004/11/08 18:48

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 50% (604/1207)

まず、初心者はむやみに CLASSPATH を設定してはいけません。すでに設定してしまっているようですが、それは削除してください。(間違ってPATHを消さないように)

さて、
Exception in thread "main"java.lang.NoClassDefFoundError:test
というのはtestというクラスが見つからないというエラーです。testというクラスが存在しているか、つまり、test.classという名前のクラスファイルが存在しているか確かめてください。

※ javacコマンドに指定するのはソースファイルの名前ですが、javaコマンドに指定するのはクラスの名前です。
よく分からないという場合には test.java ファイルの中身をそのまま補足欄に投稿してください。
補足コメント
9q9q9q9q

お礼率 76% (16/21)

ご回答ありがとうございます。
初心者でよくわかりにくいこと言ったらすいません。

CLASSPATHは削除しました。
確認しましたところ、「C:\ja」に
「test.java」と「Print.class(見たことありませんでした。)」が存在していました。

ファイルの中身に関してですが、よくわらないのですが、test.javaには何も入力してありません。Print.classには、「ハ .

<init> ()V Code LineNumberTable main ([Ljava/lang/String;)V
SourceFile test.java Hello World! Print java/lang/Object java/lang/System out Ljava/io/PrintStream; java/io/PrintStream println (Ljava/lang/String;)V *キ ア
% イ カ ア


」というように文字化けしています。これがいけないのでしょうか…
投稿日時:2004/11/07 20:52
  • 回答No.1

ベストアンサー率 48% (730/1515)

「.;C:\ja\test;%CLASSPATH%」



「.;C:\ja;%CLASSPATH%」

にしてみたらどうでしょう。
(クラスパスに設定するのはファイルではなくて
classファイルがあるディレクトリです)
お礼コメント
9q9q9q9q

お礼率 76% (16/21)

ご回答ありがとうございます!
投稿日時:2004/11/07 20:51
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ