Класовий шлях - це список місць для завантаження класів.
Ці "місця" можуть бути або каталогами, або файлами jar.
Для каталогів JVM буде слідувати очікуваній схемі завантаження класу. Якщо у мене на своєму classpath є каталог C: / myproject / класів , і я намагаюся завантажити клас com.mycompany.Foo , він буде шукати в каталозі класів каталог, який називається com , а потім під цим каталогом, який називається mycompany , і нарешті, він буде шукати файл під назвою Foo.class у цьому каталозі.
У другому випадку для jar файлів він шукатиме файл jar для цього класу. Файл jar - це насправді лише колекція каталогів, як описано вище. Якщо ви розпакуєте файл jar, ви отримаєте купу каталогів та файлів класів, наступних за зразком.
Тож JVM проходить шлях від початку до кінця, шукаючи визначення класу, коли він намагається завантажити визначення класу. Наприклад, у класі:
C: / мійпроект / класи; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
JVM спробує спочатку шукати класи каталогів , потім в stuff.jar і нарешті в otherstuff.jar .
Коли ви отримуєте ClassNotFoundException, це означає, що JVM пройшов весь класний шлях і не знайшов клас, на який ви намагалися посилатися. Рішення, як це часто трапляється в світі Java, - перевірити свій класний шлях.
Ви визначаєте класний шлях у командному рядку, кажучи java -cp, а потім ваш classpath. У IDE, такому як Eclipse, у вас буде можливість меню вказати ваш класний шлях.