logo

Как да зададете CLASSPATH в Java

CLASSPATH: CLASSPATH е променлива на средата, която се използва от Application ClassLoader за намиране и зареждане на .class файловете. CLASSPATH дефинира пътя за намиране на трети страни и дефинирани от потребителя класове, които не са разширения или част от Java платформа. Включете всички директории, които съдържат .class файлове и JAR файлове, когато задавате CLASSPATH.

Трябва да зададете CLASSPATH, ако:

списък с масиви java
  • Трябва да заредите клас, който не присъства в текущата директория или други поддиректории.
  • Трябва да заредите клас, който не е на място, посочено от механизма за разширения.

CLASSPATH зависи от това какво задавате CLASSPATH. CLASSPATH има име на директория или име на файл в края. Следващите точки описват какво трябва да бъде краят на CLASSPATH.

  • Ако JAR или zip, файлът съдържа клас файлове, CLASSPATH завършва с името на zip или JAR файла.
  • Ако файловете на класа са поставени в пакет без име, CLASSPATH завършва с директорията, която съдържа файловете на класа.
  • Ако клас файловете са поставени в именуван пакет, CLASSPATH завършва с директорията, която съдържа основния пакет в пълното име на пакета, което е първият пакет в пълното име на пакета.

Стойността по подразбиране на CLASSPATH е точка (.). Това означава единствената текуща търсена директория. Стойността по подразбиране на CLASSPATH се отменя, когато зададете променливата CLASSPATH или използвате командата -classpath (накратко -cp). Поставете точка (.) в новата настройка, ако искате да включите текущата директория в пътя за търсене.

Ако CLASSPATH намери файл с клас, който присъства в текущата директория, тогава той ще зареди класа и ще го използва, независимо от класа със същото име, представен в друга директория, която също е включена в CLASSPATH.

Ако искате да зададете множество пътеки към класове, тогава трябва да разделите всяка ПЪТНЯ КЛАСА с точка и запетая (;).

Приложенията на трети страни (MySQL и Oracle), които използват JVM, могат да променят променливата на средата CLASSPATH, за да включват библиотеките, които използват. Класовете могат да се съхраняват в директории или архивни файлове. Класовете на платформата Java се съхраняват в rt.jar.

Има два начина за задаване на CLASSPATH: чрез командния ред или чрез задаване на променлива на средата.

Нека да видим как да зададем CLASSPATH на MySQL база данни:

Етап 1: Щракнете върху бутона Windows и изберете Контролен панел. Изберете Система.

Как да зададете CLASSPATH в Java

Стъпка 2: Кликнете върху Разширени настройки на системата .

Как да зададете CLASSPATH в Java

Стъпка 3: Ще се отвори диалогов прозорец. Кликнете върху Променливи на средата.

hashmap
Как да зададете CLASSPATH в Java

Стъпка 4: Ако CLASSPATH вече съществува в системните променливи, щракнете върху бутона Редактиране, след което поставете точка и запетая (;) в края. Поставете пътя на файла MySQL-Connector Java.jar.

Ако CLASSPATH не съществува в System Variables, щракнете върху бутона New и въведете име на променлива като CLASSPATH и стойност на променлива като C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;

Запомнете: Поставете ;.; в края на CLASSPATH.

Как да зададете CLASSPATH в Java

Разлика между PATH и CLASSPATH

ПЪТЕКА CLASSPATH
PATH е променлива на средата. CLASSPATH също е променлива на средата.
Използва се от операционната система за намиране на изпълнимите файлове (.exe). Използва се от Application ClassLoader за намиране на .class файла.
От вас се изисква да включите директорията, която съдържа .exe файлове. От вас се изисква да включите всички директории, които съдържат .class и JAR файлове.
Променливата на средата PATH, веднъж зададена, не може да бъде заменена. Променливата на средата CLASSPATH може да бъде заменена с помощта на опцията на командния ред -cp или -CLASSPATH както за командата javac, така и за java.

Как да зададете CLASSPATH в Windows с помощта на командния ред

Въведете следната команда в командния ред и натиснете enter.

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

В горната команда, наборът е вътрешна команда на DOS, която позволява на потребителя да промени стойността на променливата. CLASSPATH е име на променлива. Променливата, затворена в знака за процент (%), е съществуваща променлива на средата. Точката и запетая е разделител, а след (;) има ПЪТЯ на файла rt.jar.

конвертиране на char в int java

Как работи папката ext в Java

Директорията ext работи малко като CLASSPATH. ext директорията е част от механизма за зареждане на класове. Класовете, които са налични в рамките на JAR файлове в ext директорията, са достъпни за Java приложения.

Следната таблица демонстрира ключовата разлика между CLASSPATH и механизма за разширение:

Характеристики CLASSPATH Разширителен механизъм
Ред за зареждане на класове CLASSPATH се зарежда след стартиране и зареждане на разширение. ext се зарежда след зареждане на bootstrap, но преди зареждане на CLASSPATH.
Обхват Това е специфично приложение. Всички JRE на хоста са променливата на средата CLASSPATH. Всички JVM се изпълняват в конкретни JRE java.ext.dirs.
Име на пакета java.class.path се използва за намиране на директории и JAR архиви, съдържащи клас файлове. java.ext.dirs се използва за указване къде механизмът за разширение зарежда класове.
Спецификация Посочва се по име, включително разширение.jar и директория, съдържаща .class файлове. Зареждат се всички JAR файлове в определени директории.

Механизмът ще вземе всички .jar файлове от директорията с разширение, дори ако файлът няма разширение .jar. Реализирането на това е, че ако човек може да промени името на буркан, поставен в директория на classpath, за да има разширение, различно от .jar. Заместващият знак (*) не го взема. Тази техника няма да работи с директорията на разширението.

Нека разберем процеса на изпълнение чрез пример.

A.java

 public class A { public String toString() { return 'hello'; } } 

B.java

 public class B { public static void main(final String[] args) { System.out.println(new A()); } } 

Компилирайте файла A.java. ще архивираме компилирания A.class файл в A.jar. Поставете този JAR файл в друга директория, различна от компилирания B.class файл.

За да демонстрираме използването на classpath, поставяме файла A.jar в директория C:JavaPrograms и ще имаме достъп до този JAR чрез заместващ знак (*), за да го използва B.

Открихме, че B все още може да зареди A.class, докато го бяхме изтрили от текущата директория. Стартовият панел на Java беше изрично търсен за C:JavaProgram. Възможно е също класът да бъде зареден без присъствието му в същата директория и изрична спецификация на пътя на класа.

Често се споменава като полза от използването на механизма за разширение, тъй като всички приложения, които използват този JRE, могат да виждат едни и същи класове, без да е необходимо да ги посочват изрично в пътя на класа.

Какво се случва, ако променим името на A.jar в A.backup в същата директория, реферирана с CLASSPATH. NoClassDefFoundError се среща, когато правим същото, защото препратката към CLASSPATH няма разширение .jar.

фабричен дизайн модел