Java アプリケーションを実行しようとしていますが、次のエラーが発生します:
java.lang.ClassNotFoundException:
コロンの後には、欠落しているクラスの場所が続きます。ただし、クラスは別の場所にあるため、その場所は存在しないことはわかっています。そのクラスのパスを更新するにはどうすればよいでしょうか。クラス パスと何か関係があるのでしょうか。
ベストアンサー1
クラスパスは、クラスをロードする場所のリストです。
これらの「場所」は、ディレクトリまたは jar ファイルのいずれかになります。
ディレクトリの場合、JVMはクラスをロードするための予想されるパターンに従います。ディレクトリがある場合C:/myproject/クラスクラスパスにクラスをロードしようとするとcom.mycompany.Foo、クラスディレクトリの下に、com、その下に弊社そして最後に、Foo.クラスそのディレクトリ内。
2 番目のインスタンスでは、jar ファイルでそのクラスを検索します。jar ファイルは、実際には上記のようなディレクトリの圧縮されたコレクションです。jar ファイルを解凍すると、上記のパターンに従った一連のディレクトリとクラス ファイルが得られます。
したがって、JVM はクラス定義をロードしようとするときに、クラスパスを最初から最後まで走査してクラスの定義を探します。たとえば、クラスパスでは次のようになります。
C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar
JVMはディレクトリ内を検索しようとしますクラスまず、次にスタッフ.jarそして最後にその他.jar。
ClassNotFoundException が発生した場合、それは JVM がクラスパス全体をトラバースしたが、参照しようとしたクラスが見つからなかったことを意味します。Java の世界ではよくあることですが、解決策はクラスパスを確認することです。
コマンドラインでクラスパスを定義するには次のようにします。java -cpそしてクラスパスを入力します。Eclipse などの IDE では、クラスパスを指定するためのメニュー オプションがあります。