Ścieżka klas to lista lokalizacji, z których mają być ładowane klasy.
Te „lokalizacje” mogą być katalogami lub plikami jar.
W przypadku katalogów maszyna JVM będzie postępować zgodnie z oczekiwanym wzorcem ładowania klasy. Jeśli mam katalog C: / myproject / classes w mojej ścieżce klas i spróbuję załadować klasę com.mojafirma.Foo , w katalogu klas będzie szukać katalogu o nazwie com , a następnie w tym katalogu o nazwie mojafirma i w końcu będzie szukał pliku o nazwie Foo.class w tym katalogu.
W drugim przypadku, dla plików jar, przeszuka plik jar dla tej klasy. Plik jar jest w rzeczywistości po prostu spakowaną kolekcją katalogów, jak powyżej. Jeśli rozpakujesz plik jar, otrzymasz kilka katalogów i plików klas zgodnie z powyższym wzorcem.
Zatem maszyna JVM przemierza ścieżkę klasy od początku do końca, szukając definicji klasy, gdy próbuje załadować definicję klasy. Na przykład w ścieżce klas:
C: / mójproject / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
JVM spróbuje najpierw przeszukać klasy katalogu , następnie stuff.jar, a na końcu otherstuff.jar .
Gdy otrzymasz ClassNotFoundException, oznacza to, że maszyna JVM przeszła przez całą ścieżkę klas i nie znalazła klasy, do której próbujesz się odwołać. Rozwiązaniem, jak to często bywa w świecie Java, jest sprawdzenie ścieżki klas.
Definiujesz ścieżkę klasy w wierszu poleceń, mówiąc java -cp, a następnie swoją ścieżkę klasy. W IDE, takim jak Eclipse, będziesz mieć opcję menu do określenia ścieżki klas.