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 и изберете Контролен панел. Изберете Система.
Стъпка 2: Кликнете върху Разширени настройки на системата .
Стъпка 3: Ще се отвори диалогов прозорец. Кликнете върху Променливи на средата.
hashmap
Стъпка 4: Ако CLASSPATH вече съществува в системните променливи, щракнете върху бутона Редактиране, след което поставете точка и запетая (;) в края. Поставете пътя на файла MySQL-Connector Java.jar.
Ако CLASSPATH не съществува в System Variables, щракнете върху бутона New и въведете име на променлива като CLASSPATH и стойност на променлива като C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
Запомнете: Поставете ;.; в края на CLASSPATH.
Разлика между 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.
фабричен дизайн модел