アプリ版:「スタンプのみでお礼する」機能のリリースについて

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です。

A 回答 (2件)

mainメソッドは


public static void main(String arg[]){
}
になっていますか?
public,static,void
どのキーワードが抜けても、同様のエラーが発生したと思います。
    • good
    • 0
この回答へのお礼

なるほど、その辺も抜けていては同じようなエラーが出るのですね。
ソースを確認したところ、その辺の記述に誤りはありませんでした。
ありがとうございました。

お礼日時:2001/11/07 12:05

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が設定されたのかもしれませんね。

参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs …
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/07 12:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!