03 うまく動かない場合のトラブルシューティング

【番外編3】うまく動かない場合のトラブルシューティング

第2回までの内容で「ページに書いてある通りにやったのに、うまく動かない!」
と困っていませんか?
このコラムでは、うまく動かないパターンと、その対処策を整理しましたので、
これを参考に、もう一度チャレンジしてみてくださいね。

区切り線

ケース1:実行時に「NoClassDefFoundError」と出る。

表示例:

C:\work>java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

対策1-1:環境変数CLASSPATHが正しく設定されていますか?

【第3回】プログラムをいろいろいじって理解を深めよう!」の
「1.環境変数を変えてみよう!」を参考にして、CLASSPATHを確認してください。
特に間違いやすいのは、セミコロン、ドットの付け忘れ、 セミコロンとコロンの間違い、
ドットと カンマの間違いですね。

対策1-2:正しいファイル名を指定していますか?

初歩的なことですが、HelloWorldの綴りは正しいですか? また大文字小文字の間違いや、 誤って後ろに .class を付けたりしていないかを確認してください。

対策1-3:javacを使ったコンパイルに失敗していませんか?

javaコマンドを使って実行をする前に、javacコマンドを使ったコンパイルをしていると思います。
このコンパイルでエラーが発生していませんか?
コンパイルに失敗した場合、実行することが出来ません。
ソースファイルを見直して間違いがないか確認してください。

区切り線

ケース2:コンパイル時に「’javac’は…認識されていません。」と出る。

表示例:

C:\work>javac HelloWorld.java
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

対策2-1:環境変数PATHが正しく設定されていますか?

「【第0回】Javaをインストールしよう!」の「●初心者の落とし穴、環境変数」 を参考にして再度環境変数を設定し直してください。環境変数を再設定した場合には、設定を反映させるためにコマンドプロンプトを再起動してくださいね。

区切り線

ケース3:コンパイル時に「HelloWorld は無効なフラグです。」と出る。

表示例:

C:\work>javac HelloWorld
javac: HelloWorld は無効なフラグです。
使い方: javac <options> <source files>
使用可能なオプションには次のものがあります。

  -g                       すべてのデバッグ情報を生成する

  -g:none                  デバッグ情報を生成しない

  -g:{lines,vars,source}   いくつかのデバッグ情報だけを生成する

  -nowarn                  警告を発生させない

  -verbose                 コンパイラの動作についてメッセージを出力する

  -deprecation             推奨されない API が使用されているソースの位置を出力する

  -classpath <path>       ユーザクラスファイルを検索する位置を指定する

  -sourcepath <path>      入力ソースファイルを検索する位置を指定する

  -bootclasspath <path>   ブートストラップクラスファイルの位置を置き換える

  -extdirs <dirs>         インストール済み拡張機能の位置を置き換える

  -d <directory>          生成されたクラスファイルを格納する位置を指定する

  -encoding <encoding>    ソースファイルが使用する文字エンコーディングを指定する

  -source <release>       指定されたリリースとソースの互換性を保つ

  -target <release>       特定の VM バージョン用のクラスファイルを生成する

  -help                   標準オプションの概要を出力する

対策3-1:ファイル名は正しく入力されていますか?

ファイル名は、「.java」という拡張子も含めて正しく入力してください。
ファイル名も間違いないという場合は、異なるディレクトリを開いている可能性があります。
【第1回】悩んでないで始めましょう!」の「2.コンパイル」を参考にして、
ディレクトリを確認してみてください。

区切り線

ケース4:コンパイル時に「クラス HelloWorld は public であり、、、」と出る。

表示例:

C:\work>javac helloworld.java
helloworld.java:1: クラス HelloWorld は public であり、ファイル HelloWorld.java
で宣言しなければなりません。
public class HelloWorld
       ^
エラー 1 個

対策4-1:ファイル名、クラス名を確認してください。

クラス名とファイル名(の拡張子以外の部分)は、綴りはもちろん、大文字小文字に関しても完全に一致させる必要があります。
特に大文字小文字は間違いやすい箇所ですので、注意して確認してみてください。

~ まとめ ~

うまく動かないときは、以下の点を確認しよう!

1.ファイル名とクラス名(綴り、大文字小文字)が一致しているか?
2. 環境変数(PATH、CLASSPATH)は正しく指定されているか?
3. 異なるディレクトリで作業していないか?


さて、皆さんのトラブルは解消しましたか?
まだ、このコラムを見てもトラブルから抜け出せない場合は、
どうぞ下のフォームから質問してくださいね。