Назад Зміст Вперед

3.5. Пошук файлів за допомогою classpath

Classpath є параметром в віртуальній машині Java або компілятор Java, який визначає місце розташування заданих користувачем класів і пакетів. Параметр може бути встановлений або в командному рядку, або через змінну оточення.

Далеко не завжди зручно зберігати усі файли в одній директорії. Часто різні класи знаходяться в різних місцях, а деякі можуть навіть поширюватися у вигляді архівів, для прискорення завантаження через мережу. Вимога копіювати усі такі файли у одну теку було б украй важко. Тому Java використовує спеціальну змінну оточення, яка називається classpath. Аналогічно тому, як змінна path допомагає системі знаходити і завантажувати динамічні бібліотеки, ця змінна допомагає працювати з Java- класами. Її значення повинно складатися з шляхів до директорій або архівів, розділених крапкою з комою. З версії 1.1 підтримуються архіви типів ZIP і JAR (JavaARchive) - спеціальний формат розроблений на основі ZIP для Java.
Наприклад, змінна classpath може мати таке значення:
.;c:\java\classes;d:\lib\3dengine.zip;d:\lib\fire.jar


В результаті усі вказані директорії і вміст усіх архівів "додається" до початкової кореневої директорії. Java у пошуках класу шукатиме його за описаним вище правилом в усіх вказаних теках і архівах по порядку. 

Незважаючи на явні зручності такої конструкції, вона таїть в собі і небезпеку. Якщо при роботі сталося так, що класи, що розроблялися, лежать в деякій директорії, і вона вказана в classpath пізніше, ніж деяка інша директорія, в якій виявляються однойменні типи, то розібратися в такій ситуації буде непросто. У класи будуть вноситися зміни, які ніяк не проявляються при запуску через те, що Java насправді завантажує одні і ті ж файли із сторонньої теки.

.