CLASSPATH: CLASSPATH yra aplinkos kintamasis, kurį „Application ClassLoader“ naudoja .class failams surasti ir įkelti. CLASSPATH apibrėžia kelią, kaip rasti trečiųjų šalių ir vartotojo apibrėžtas klases, kurios nėra Java platformos plėtiniai ar dalis. Nustatydami CLASSPATH įtraukite visus katalogus, kuriuose yra .class failų ir JAR failų.
Turite nustatyti CLASSPATH, jei:
css paryškintas tekstas
- Turite įkelti klasę, kurios nėra dabartiniame kataloge ar jokiuose pakatalogiuose.
- Turite įkelti klasę, kuri nėra plėtinio mechanizmo nurodytoje vietoje.
CLASSPATH priklauso nuo to, ką nustatote CLASSPATH. CLASSPATH pabaigoje yra katalogo arba failo pavadinimas. Tolesniuose punktuose aprašoma, kas turėtų būti CLASSPATH pabaiga.
- Jei JAR arba zip, faile yra klasės failai, CLASSPATH baigiasi zip arba JAR failo pavadinimu.
- Jei klasės failai dedami į neįvardytą paketą, CLASSPATH baigiasi katalogu, kuriame yra klasės failai.
- Jei klasės failai dedami į pavadintą paketą, CLASSPATH baigiasi katalogu, kuriame yra šakninis paketas visu paketo pavadinimu, tai yra pirmasis paketas visame paketo pavadinime.
Numatytoji CLASSPATH reikšmė yra taškas (.). Tai reiškia, kad ieškomas vienintelis dabartinis katalogas. Numatytoji CLASSPATH reikšmė nepaisoma, kai nustatote CLASSPATH kintamąjį arba naudojate komandą -classpath (trumpai -cp). Įdėkite tašką (.) į naują nustatymą, jei norite įtraukti dabartinį katalogą į paieškos kelią.
Jei CLASSPATH randa klasės failą, kuris yra dabartiniame kataloge, jis įkels klasę ir naudos ją, neatsižvelgdamas į tai, ar klasė yra kitame kataloge, kuris taip pat yra įtrauktas į CLASSPATH.
Jei norite nustatyti kelis klasės kelius, kiekvieną CLASSPATH turite atskirti kabliataškiu (;).
Trečiųjų šalių programos (MySQL ir Oracle), kurios naudoja JVM, gali modifikuoti aplinkos kintamąjį CLASSPATH, kad įtrauktų jų naudojamas bibliotekas. Klasės gali būti saugomos kataloguose arba archyvų failuose. Java platformos klasės saugomos rt.jar.
Yra du būdai, kaip nustatyti CLASSPATH: naudojant komandų eilutę arba aplinkos kintamąjį.
styginių kūrimo priemonė java
Pažiūrėkime, kaip nustatyti MySQL duomenų bazės CLASSPATH:
1 žingsnis: Spustelėkite „Windows“ mygtuką ir pasirinkite Valdymo skydas. Pasirinkite Sistema.
2 žingsnis: Spustelėkite Išplėstiniai sistemos nustatymai .
3 veiksmas: Atsidarys dialogo langas. Spustelėkite Aplinkos kintamieji.
4 veiksmas: Jei CLASSPATH jau yra sistemos kintamuosiuose, spustelėkite mygtuką Redaguoti ir pabaigoje įdėkite kabliataškį (;). Įklijuokite „MySQL-Connector Java.jar“ failo kelią.
Jei CLASSPATH nėra sistemos kintamuosiuose, spustelėkite mygtuką Naujas ir įveskite kintamojo pavadinimą kaip CLASSPATH ir kintamojo reikšmę kaip C:Programų failaiJavajre1.8MySQL-Connector Java.jar;.;
Atsiminkite: Įdėkite ;.; CLASSPATH pabaigoje.
Skirtumas tarp PATH ir CLASSPATH
KELIAS | CLASSPATH |
---|---|
PATH yra aplinkos kintamasis. | CLASSPATH taip pat yra aplinkos kintamasis. |
Jį naudoja operacinė sistema, kad rastų vykdomuosius failus (.exe). | Jį naudoja „Application ClassLoader“, kad surastų .class failą. |
Turite įtraukti katalogą, kuriame yra .exe failai. | Turite įtraukti visus katalogus, kuriuose yra .class ir JAR failai. |
Kai nustatytas aplinkos kintamasis PATH, jo negalima nepaisyti. | Aplinkos kintamąjį CLASSPATH galima nepaisyti naudojant komandų eilutės parinktį -cp arba -CLASSPATH ir javac, ir java komandoms. |
Kaip nustatyti CLASSPATH sistemoje Windows naudojant komandų eilutę
Į savo komandų eilutę įveskite šią komandą ir paspauskite enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
Aukščiau pateiktoje komandoje „The set“ yra vidinė DOS komanda, leidžianti vartotojui pakeisti kintamojo reikšmę. CLASSPATH yra kintamojo pavadinimas. Kintamasis, įtrauktas į procentinį ženklą (%), yra esamas aplinkos kintamasis. Kabliataškis yra skyriklis, o po (;) yra rt.jar failo PATH.
dvejetainis medis java
Kaip ext aplankas veikia Java
Išorinis katalogas veikia panašiai kaip CLASSPATH. ext katalogas yra klasės įkėlimo mechanizmo dalis. Klasės, kurios yra JAR, esančios išoriniame kataloge, yra prieinamos Java programoms.
Šioje lentelėje parodytas pagrindinis skirtumas tarp CLASSPATH ir išplėtimo mechanizmo:
Charakteristikos | CLASSPATH | Pratęsimo mechanizmas |
---|---|---|
Klasės pakrovimo tvarka | CLASSPATH įkeliamas po įkrovos ir plėtinio įkėlimo. | ext įkelia po bootstrap įkėlimo, bet prieš įkeliant CLASSPATH. |
Taikymo sritis | Tai yra specifinė programa. Visi pagrindinio kompiuterio JRE yra CLASSPATH aplinkos kintamasis. | Visi JVM veikia konkrečioje JRE java.ext.dirs. |
Paketo pavadinimas | java.class.path naudojamas katalogams ir JAR archyvams, kuriuose yra klasės failų, rasti. | java.ext.dirs naudojamas nurodyti, kur plėtinio mechanizmas įkelia klases. |
Specifikacija | Jis nurodomas pavadinimu, įskaitant plėtinį.jar ir katalogą, kuriame yra .class failai. | Įkeliami visi nurodytų katalogų JAR failai. |
Mechanizmas paims visus .jar failus iš plėtinių katalogo, net jei failas neturi .jar plėtinio. Tai įgyvendinama taip, kad jei galima pakeisti jar, esančio classpath kataloge, pavadinimą, kad jo plėtinys būtų kitoks nei .jar. Pakaitos simbolis (*) jo nepaima. Ši technika neveiks su plėtinių katalogu.
Supraskime vykdymo procesą per pavyzdį.
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()); } }
Sukompiliuokite A.java failą. surašytą A.class failą archyvuosime į A.jar. Įdėkite šį JAR failą į kitą katalogą nei sukompiliuotas B.class failas.
Norėdami parodyti, kaip naudojamas klasės kelias, įdedame A.jar failą į katalogą C:JavaPrograms ir prie jo JAR pasieksime naudodami pakaitos simbolį (*), kad galėtų naudoti B.
Mes nustatėme, kad B vis dar gali įkelti A.klasę, kol ją ištrynėme iš dabartinio katalogo. „Java“ paleidimo priemonė buvo aiškiai ieškoma C:JavaProgram. Taip pat galima įkelti klasę be jos buvimo tame pačiame kataloge ir aiškios klasės kelio specifikacijos.
Tai dažnai vadinama išplėtimo mechanizmo naudojimo pranašumu, nes visos programos, kurios naudoja tą JRE, gali matyti tas pačias klases ir nereikia jų aiškiai nurodyti klasės kelyje.
Kas atsitiks, jei pakeisime A.jar pavadinimą į A.backup tame pačiame CLASSPATH nurodytame kataloge. Kai darome tą patį, susiduriama su NoClassDefFoundError, nes CLASSPATH nuoroda neturi plėtinio .jar.
java dizaino modelis