2016-06-28 8 views
0

CLASSPATH変数をシステム変数のJUNIT_HOME/junit-4.12.jarに変更すると、Javaコマンドが機能しなくなります。CLASSPATHをJUNIT_HOME/junit-4.12.jarに変更すると、javaコマンドが動作を停止します

たとえば、クラスファイルを実行する場合、「メインクラスを見つけることができませんでした」というエラーメッセージが表示されますが、javacはうまくいきます。

CLASSPATHを削除すると、javaコマンドが再び動作を開始します。

答えて

2

変数CLASSPATHは、JDKツールを含むアプリケーションに、ユーザークラスを探す場所を指定するための方法の1つです。 javaコマンドを実行してJavaアプリケーションを起動すると、Javaランタイム環境が起動し、指定されたクラスがロードされ、そのクラスのmainメソッドが呼び出されます。

CLASSPATH変数がJUNIT_HOME/junit-4.12.jarに設定されている場合は、JUNIT_HOME/junit-4.12.jar内のクラスのみが読み込まれます。したがって、Could not find or load main classエラーが発生します。

クラスパスを指定する好ましい方法は、-cpコマンドラインスイッチを使用することです。これにより、CLASSPATHを他のアプリケーションに影響を与えることなくアプリケーションごとに個別に設定することができます。

クラスパスのデフォルト値は"."です。つまり、現在のディレクトリのみが検索されます。クラスファイルが他のディレクトリ、たとえばクラスc:\otherDirectoryにある場合は、クラスパスを次のように設定できます。

java -classpath ".;c:\otherDirectory" 
1

クラスパスに行く必要がある瓶がもうありますか? JUNITはテスト目的のみのため、クラスパス上でも使用しているすべての依存関係を追加する必要があると思います。 一方、システム環境変数でこれを行うのは良い考えではありません。 java -classpathコマンドを見てから、1つのアプリケーションまたはコマンドに対してクラスパスの依存関係を追加することもできます。

関連する問題