【初心者】Java質問・相談スレ45【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0197初学者
NGNG状況
javaコマンド実行時に、以下のエラーメッセージが出てしまいます。
Exception in thread "main" java.lang.NoClassDefFoundError: Sample (wrong name: chapter1/Sample)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
以下もスタックトレースの内容が表示されました。
行った手順
1.mainメソッド(「Hello Java」を表示する単純なクラス)があるSampleクラスにchapter1というパッケージ名をつけた。
2.以下コマンドプロンプトでの実行手順(コンパイル済)
>C:\j2sdk1.4.2_04\sample\chapter1>java Sample ←Sampleクラスがあるディレクトリで実行。状況に記述したエラーが表示。
>C:\j2sdk1.4.2_04\sample\chapter1>java chapter1.Sample ←スタックトレースは表示されないが、エラーメッセージはほぼ同じ。
>C:\j2sdk1.4.2_04\sample\>java chapter1.Sample ←一階層戻ったら、Hello Java が表示された。
疑問点
1.VMのクラス検査順序は
�@標準ライブラリの中から実行するクラスを検査
�Aカレントディレクトリからクラスを検査
�Bクラスパスで指定されているパスからクラスを検査
�C上記の�@、�A、�Bで見つからなかったらNotClassDefErrorがスローされる
上記の認識が正しければ、「java Sample」で実行されるのではないのか?
2.なぜ、手順の最終行のように、パッケージの先頭ディレクトリだと実行可能なのか?
サイトで調べたのですが、解決できなかったので、何卒御教授下さい。
■ このスレッドは過去ログ倉庫に格納されています