• ベストアンサー

JAVA実行時エラーについて教えてください

JAVAを最近になって始めた初心者です。 コンパイルは問題なく終了するのですが、実行時に Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld(Unsupported major.minor version 49.0)    at java.lang.ClassLoader.defineClass0(Native Method)    at java.lang.ClassLoader.defineClass(Unknown Source) と表示されます。実際には at java.~ 以降にも複数行文字が表示されています。(全部で12行です) ソースファイル及びクラスファイルの格納先は c:\java\HelloWorld.java c:\java\HelloWorld.class ソースは以下の様に記述しました。 class HelloWorld { public static void main(String args[]) { System.out.println("HelloWorld"); } } 1)過去ログから“環境設定のクラスパス”及びコマンドプロンプトで “java -cp. HelloWorld”を確認しました。そうすると以下のようなメッセージが表示されます。 Unrecognized option: -cp. Could not create the Java virtual machine. 2)システム環境変数の“PATH”は以下のように記述しております。 ;C:\Program Files\Java\jdk1.5.0_07\bin 3)システム環境変数の“CLASSPATH”は指定しておりません。というより、指定しても現象は変わりませんでした。 ご教授願えないでしょうか。宜しくお願い致します。

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

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

エラーメッセージの中に出ている "Unsupported major.minor version 49.0" というのは JDK と JRE のバージョンが違う時に出るようです(参考URLのページ参照)。 ということで、JDK をインストールしているなら JRE はアンインストールした方が混乱がなくていいと思いますよ(そのままでもPATHなどの環境変数を適切に設定すれば分けて実行可能だとは思いますが面倒です)。 よくわからなければ現在インストールされている JDK と JRE を全てアンインストールしてから JDK だけをインストールして下さい。

参考URL:
http://forums.belution.com/ja/java/000/002/75.shtml
whitenight
質問者

お礼

ご返答ありがとうございます。 JDKとJREのバージョンが違う可能性があるのですね・・・。 SUNのHPからJDK(jdk1.5.0_07)をダウンロードしてそのままインストールしたのですが・・・。 ご指摘のとおり、JDKとJREは何度かアンインストールして確認は致しましたが、JREのみアンインストールはしておりませんので、これから確認してみます。

その他の回答 (6)

回答No.7

#6です。 あなたの質問文からの抜粋です。 >Unrecognized option: -cp. 「-cp.」 となっていますよね。これはあなたが「java -cp. HelloWorld」とコマンドしたからです。#6にも書きましたが、半角ピリオド(ドット)の前後には”必ず”半角スペースを入れてください。 正式には、「java -cp . HelloWorld」 あなたの打ったコマンドは「java -cp. HelloWorld」 両者の違いがわかりますか?私が上記で述べたとおりです。 「java -cp . HelloWorld」 「java -cp. HelloWorld」 一文字違いますよね? 最初は慣れるまで大変ですが、基本事項さえ”しっかり”守れば、”間違いなく”できます。では、がんばってください。

whitenight
質問者

お礼

ご回答ありがとうございます。また、お礼に時間がかかってしまい誠に申し訳ございません。 色々調査してみて今回うまくいかなかった原因が判明しました。 (原因) 今回、初めてJavaの学習を行うにあたって、SUN社のHPからJ2SE1.4.2(j2sdk-1_4_2_12-windows-i586-p.exe)をダウンロード→インストールしなければならないのに、これを行わずにJ2SE5.0(jdk-1_5_0_07-windows-i586-p.exe)をダウンロード→インストールした為に今回のようなエラーメッセージが表示されたことが判明しました。 原因に記載した様にJ2SE1.4.2をインストールする事で、正常に動作するのを確認いたしました。 これまで、ご回答ご指摘いただいた皆様ありがとうございました。 これから先色々とこのサイトで質問をすることがあるかと思いますが、今後も宜しくお願い致します。

回答No.6

あなたのこの質問の上の質問に答えていて、同様のエラーがでたが、その方は解決したそうです。 ただ単に「java -cp . hogehoge.java」とするところを「java -cp. hogehoge.java」としてしまったみたいです。 要するに半角ピリオド(ドット)の”前後”と、「java」と「-cp」の間には半角スペースが”絶対”必要です。 JDKとJavaヴァーチャルマシンのバージョンの違いでそのようなエラーが出るとは僕も知りませんでしたが、初心者の方の大抵のエラーは、単なるケアレスミスです。 ●文字を一文字も間違えない(全角・半角も注意する) ●JDKとJREのバージョンをあわせる。 ●環境変数PATHの設定を間違いなくする。 ●Windows98,WindowsMEの人は、環境変数を設定したらPCを再起動する。 以上、4点を守りさえすれば、”間違いなく”Javaは動いてくれます。 では、頑張ってください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2203459
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.5

こんにちは。No.2です。 えっと、よく見て落ち着いて実行して下さい。 補足いただいた java -cp. HelloWorld java -cp.;HelloWorld ですが、 No2にて回答した java -cp . HelloWorld java -cp .; HelloWorld とよく見比べてみてください。 java_-cp_.;_HelloWorld ( _ を半角スペースとします) -cpとドットの間の半角スペースがありません。 それでも実行できないとなるとNo3さんの情報を調べてみてください。 (実際開発していても稀に起こります。バージョンの差異)

whitenight
質問者

お礼

何度もご回答ありがとうございます。 ご指摘のようにスペースを入れ忘れているところがあったようです・・・。確認してみましたが、結果は変わりませんでした。 No3の方がご指摘いただいたやり方を試してみたいと思います。

回答No.4

普通に JDK をインストールしただけでは -cp オプションは不要だと思いますが、他のソフトとの都合で今後必要になるかも知れないので書いておきます。 > java -cp.の間及び-cp. HelloWorldの間は共に半角スペースを入れております。 -cp オプションは -cp の直後にスペースを入れてその後に クラスパスを書く必要があります。クラスパスが '.' ならば下記のようになります。 java -cp . HelloWorld これはスペースを入れるべき所を[スペース]と書くとすると下記のようになります。 java[スペース]-cp[スペース].[スペース]HelloWorld

whitenight
質問者

お礼

ご返答ありがとうございます。 どうやら私が-cpオプションの記述が間違っていたみたいですね。 ですが、ご指摘どおり確認してみたところ結果は変わりませんでした。 再度、ご教授願えないでしょうか。宜しくお願い致します。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 実行時クラスパスの指定は java -cp . HelloWorldとか java -cp .; HelloWorldとかになります。 java_-cp_.;_HelloWorld ( _ を半角スペースとします)

whitenight
質問者

お礼

早速のご返答ありがとうございます。 実行時クラスパスの指定ですが、 java -cp.の間及び-cp. HelloWorldの間は共に半角スペースを入れております。 java -cp. HelloWorld java -cp.;HelloWorld 上記を実行致しましたが結果は Unrecognized option: -cp. Could not create the Java virtual machine のままです。 申し訳ございませんが、再度ご教授願います。

回答No.1

java -cp. HelloWorld ドットが入っていますね。

whitenight
質問者

お礼

早速のご返答ありがとうございます。 質問内容にも記述致しましたが、過去ログで -cpの後に .(ドット)を入れ、半角スペースを入れてから[ファイル名]を記載する とあったものですからそうしておりました。 これは、間違いでしょうか? 再度、ご教授願います。

関連するQ&A