• ベストアンサー

Java実行でのエラー

Javaを勉強したいのでインストールしてみたところまでは良かったのですがコンパイルを通した後に実行すると動きません。 CLASSPATH:c:\Java JavaファイルがJavaフォルダの中に入っている状態です。 【手順】 c:\Java>java HelloJava.java ↓コンパイル成功 c:\Java>java HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava というエラーが出てJavaを実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。

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

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.5

そもそも、CLASSPATH 環境変数は設定すべきではありません。 クラスパスのことについてよく理解していない初心者ならなおさらです。 CLASSPATH 環境変数は (システム変数もユーザ変数も) 削除してしまった方が幸せになれると思います。 CLASSPATH 環境変数を消して、プロンプトを起動し、 C:\Java に「cd」したら、「java HelloJava」でちゃんと実行できるはずです。 で、一応補足の質問にも答えておきます。 > .:%JAVA_HOME%\lib\tools.jar;C:\Java セミコロンが間違ってコロンになっています。 > java -classpath c:\Java HelloJava 「-classpath c:\Java」は CLASSPATH 環境変数を無視してクラスパスを C:\Java に指定するという意味です。間違った環境変数を無視して正しいクラスパスを指定したのでちゃんと動作したわけです。

IceCocoa31
質問者

お礼

クラスパスの方無事に通りました。 皆さんありがとうございました。

その他の回答 (4)

  • gwegwwaa
  • ベストアンサー率66% (2/3)
回答No.4

java.lang.NoClassDefFoundError はクラスが見つからないというエラーですので、 1.コンパイルエラーが発生してクラスが見つからない 2.クラスパスが設定されていない のどちらかだと思いますが、 1はなさそうなので、 java -classpath c:\Java HelloJava で再実行してみてください。

IceCocoa31
質問者

補足

gwegwwaaさんご回答ありがとうございます。 とりあえず動きましたが、どうしてgwegwwaaさんの記述だと動作するのでしょうか? 後、クラスパスは設定している筈なのですがどこか間違っているのでしょうか・・・ 【ユーザ関数】 変数名:CLASSPATH 変数値:.:%JAVA_HOME%\lib\tools.jar;C:\Java 【システム環境変数】 変数名:CLASSPATH 変数値:C:\Java 最初にシステム環境変数にパスを入力したのですが、ダメだったのでユーザ関数にも追加してみましたが通りません。(汗

  • isi0611
  • ベストアンサー率34% (46/134)
回答No.3

こんばんは! まずですがIceCocoa31さんの記述されている >【手順】 >c:\Java>java HelloJava.java ではコンパイルされていない気がするのですが・・・。 コンパイルは java でなく javac ですね。 なので c:\Java>javac HelloJava.java となります。 そうするとHelloJava.classができて コンパイル成功となります。 原因が他なら参考URLを添付しますので CLASSPATH の確認のところを 見てみてください。

参考URL:
http://www.nextindex.net/java/app/setup.html
IceCocoa31
質問者

補足

こんばんは。^^ そしてすみません [c:\Java>java HelloJava.java]ですが「c」が抜けていましたね, 実際はcが付いていて、ちゃんとコンパイルは通ったのですが表示が出来なくて困っています。

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

ご質問にあるようなエラーは何らかの原因でクラスファイルが読み込めないときに出ます。main メソッドが見つからないという場合にはこれとは別のエラーがでます。 まずは「C:\Java」に「HelloJava.class」というファイルがあることを確認してください。「HelloJava.class」がない場合はコンパイルができていません。 「HelloJava.class」があるのに c:\Java>java HelloJava でエラーが出る場合はクラスパス環境変数の設定を下手にいじっている可能性があります。 c:\Java>java -cp . HelloJava を試してみてください。

IceCocoa31
質問者

補足

mainメソッドが見つからない場合はやはりCLASSPATHが原因なんでしょうか・・・ HelloJava.classは生成されていますので、コンパイルの後に実行ができない状態ですね。 【ユーザ関数】 変数名:CLASSPATH 変数値:.:%JAVA_HOME%\lib\tools.jar;C:\Java 【システム環境変数】 変数名:CLASSPATH 変数値:C:\Java

  • shinyu
  • ベストアンサー率26% (5/19)
回答No.1

HelloJava.javaというファイルにmain文がないときにそのようなエラーが出ると思います.

IceCocoa31
質問者

補足

shinyuさん、早速の回答の程ありがとうございます。 これが私の打ったソースなのですが、 main文というのはこの中では ※public static void main(String[] args) { /*メイン文*/ } という感じになるのでしょうか? class HelloJava{ public static void main(String[] args) { System.out.println("Hello Java!"); } }

関連するQ&A

専門家に質問してみよう