OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

コマンドプロンプトから実行した時にエラーが出る

  • すぐに回答を!
  • 質問No.161162
  • 閲覧数353
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 18% (3/16)

Javaでバイトコードを実行しようとしたら、こんな文が出ました。

Exception in thread "main" java.lang.NoClassDefFoundError: Test01

実行できないのでWEBで調べてみたところ、以下のような回答がありました。

以下引用文>>
Exception in thread "main"java.lang.NoClassDefFoundError:HelloWorld
というエラーが出て動きません。

[S002-A08]
実行時エラーがでていることから、javaインタープリターは動いています。
HelloWorld という名前のクラスがみつからないというエラーです。

JDK1.2 以降の Java をお使いの場合、、

プロンプト> java -classpath . HelloWorld

でどうでしょう? これでうまくいくならば CLASSPATH環境変数の
設定に . (ドット、ピリオド)がないのが原因です。
CLASSPATH環境変数は、間違い易いことが多い機能ですので完全に理解するまでは使わず、
-classpath 実行時オプションでクラスパス(java VM がクラスファイルを探すパス)を
教えてあげることをお勧めします。

doskey とうてば、Windows95/98 の MS-DOSプロンプトでのコマンド入力も苦にならないでしょう。
>>

以前はこんなことせずともコンパイル、実行できたんですが、何が変わってしまったのでしょうか。PATHの設定は正しく設定しているつもりなのですが…
個人的には毎回実行パラメーターに"-classpath . "と打ち込むのは面倒なので、打ち込まないでも実行できる方法が知りたいと思います。
ちなみにJDKのバージョンは1.3.1_01
OSはWindows2000です。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1

excelkingさん、こんにちは。
実は、WEBで調べた結果に答えはあるですんね。

>> これでうまくいくならば CLASSPATH環境変数の
設定に . (ドット、ピリオド)がないのが原因です。
>> CLASSPATH環境変数は、間違い易いことが多い機能ですので完全に理解するまでは使わず、-classpath 実行時オプションでクラスパス(java VM がクラスファイルを探すパス)を教えてあげることをお勧めします。

Javaを実行する場合、コマンド入力時にオプション -classpath があれば続くパスを、なければ環境変数 CLASSPATH で指定したパスをスタートラインにして、クラスファイルを検索します。
# 環境変数CLASSPATHです。PATHではありません。
逆に言うと、環境変数 CLASSPATH に変な値が設定されていると、オプション -classpath が指定されていない場合、JavaVMはクラスファイルが検索できず、エラーを返すわけです(たとえ、カレントディレクトリにあってもです)。
今回のエラーを見る限り、環境変数CLASSPATHはあるんだけど、カレントディレクトリを表す . (ピリオド)が含まれていないためでしょう。
よって、CLASSPATHの内容を確認してみてください。確認は、Win2000なら「コントロールパネル」-「システム」を選択、「詳細」タブを選択、「環境変数」ボタンを押下、画面上部のユーザー環境変数かシステム環境変数のリストに、「CLASSPATH」はありませんか。あれば、ダブルクリックしてください。開いた「システム変数の編集」ダイアログの「変数値」を修正します。すでに設定されている値の前に「.;(ピリオド、セミコロン)」を挿入します。
あとは「OK」を3回押してすべてのダイアログを閉じて、再度実行してみてください。おそらくエラーは回避されるはずです(でなければ、違うエラーに変化)。

ここで、ひとつ疑問。環境変数 CLASSPATH の設定がなく、オプション -classpath が指定されていないときに、実行するとどうなるのでしょう。
実は、JavaVMは、カレントディレクトリからクラスファイルを探そうとします。これが、「以前はこんなことせずともコンパイル、実行できたんですが」の理由だと思います。ところが何かアプリケーションをインストールした拍子に、勝手にCLASSPATHが設定されたのかもしれませんね。
お礼コメント
excelking

お礼率 18% (3/16)

どうも、QuickTimeのインストール時に、CLASSPATHの変数に値が入っていました。
その値が文字化けした値になっていたので、このような現象が起こった模様です。
CLASSPATHの変数自体を削除すると上手くいきました。
(その後は特に問題は出ていないんですが、大丈夫でしょうか…(笑))
勉強になりました。ありがとうございます。
投稿日時 - 2001-11-07 12:02:58
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル10

ベストアンサー率 28% (33/117)

mainメソッドは public static void main(String arg[]){ } になっていますか? public,static,void どのキーワードが抜けても、同様のエラーが発生したと思います。 ...続きを読む
mainメソッドは
public static void main(String arg[]){
}
になっていますか?
public,static,void
どのキーワードが抜けても、同様のエラーが発生したと思います。
お礼コメント
excelking

お礼率 18% (3/16)

なるほど、その辺も抜けていては同じようなエラーが出るのですね。
ソースを確認したところ、その辺の記述に誤りはありませんでした。
ありがとうございました。
投稿日時 - 2001-11-07 12:05:43
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ