- ベストアンサー
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を実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。
- みんなの回答 (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 に指定するという意味です。間違った環境変数を無視して正しいクラスパスを指定したのでちゃんと動作したわけです。
その他の回答 (4)
- gwegwwaa
- ベストアンサー率66% (2/3)
java.lang.NoClassDefFoundError はクラスが見つからないというエラーですので、 1.コンパイルエラーが発生してクラスが見つからない 2.クラスパスが設定されていない のどちらかだと思いますが、 1はなさそうなので、 java -classpath c:\Java HelloJava で再実行してみてください。
補足
gwegwwaaさんご回答ありがとうございます。 とりあえず動きましたが、どうしてgwegwwaaさんの記述だと動作するのでしょうか? 後、クラスパスは設定している筈なのですがどこか間違っているのでしょうか・・・ 【ユーザ関数】 変数名:CLASSPATH 変数値:.:%JAVA_HOME%\lib\tools.jar;C:\Java 【システム環境変数】 変数名:CLASSPATH 変数値:C:\Java 最初にシステム環境変数にパスを入力したのですが、ダメだったのでユーザ関数にも追加してみましたが通りません。(汗
- isi0611
- ベストアンサー率34% (46/134)
こんばんは! まずですがIceCocoa31さんの記述されている >【手順】 >c:\Java>java HelloJava.java ではコンパイルされていない気がするのですが・・・。 コンパイルは java でなく javac ですね。 なので c:\Java>javac HelloJava.java となります。 そうするとHelloJava.classができて コンパイル成功となります。 原因が他なら参考URLを添付しますので CLASSPATH の確認のところを 見てみてください。
補足
こんばんは。^^ そしてすみません [c:\Java>java HelloJava.java]ですが「c」が抜けていましたね, 実際はcが付いていて、ちゃんとコンパイルは通ったのですが表示が出来なくて困っています。
- UKY
- ベストアンサー率50% (604/1207)
ご質問にあるようなエラーは何らかの原因でクラスファイルが読み込めないときに出ます。main メソッドが見つからないという場合にはこれとは別のエラーがでます。 まずは「C:\Java」に「HelloJava.class」というファイルがあることを確認してください。「HelloJava.class」がない場合はコンパイルができていません。 「HelloJava.class」があるのに c:\Java>java HelloJava でエラーが出る場合はクラスパス環境変数の設定を下手にいじっている可能性があります。 c:\Java>java -cp . HelloJava を試してみてください。
補足
mainメソッドが見つからない場合はやはりCLASSPATHが原因なんでしょうか・・・ HelloJava.classは生成されていますので、コンパイルの後に実行ができない状態ですね。 【ユーザ関数】 変数名:CLASSPATH 変数値:.:%JAVA_HOME%\lib\tools.jar;C:\Java 【システム環境変数】 変数名:CLASSPATH 変数値:C:\Java
- shinyu
- ベストアンサー率26% (5/19)
HelloJava.javaというファイルにmain文がないときにそのようなエラーが出ると思います.
補足
shinyuさん、早速の回答の程ありがとうございます。 これが私の打ったソースなのですが、 main文というのはこの中では ※public static void main(String[] args) { /*メイン文*/ } という感じになるのでしょうか? class HelloJava{ public static void main(String[] args) { System.out.println("Hello Java!"); } }
お礼
クラスパスの方無事に通りました。 皆さんありがとうございました。