Java iš komandinės eilutės
Java komandinės eilutės įrankių aprašymai: http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic
Pagrindiniai:
Java komandinės eilutės įrankių aprašymai: http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic
Pagrindiniai:
- javac - java kompiliatorius.
- java - naudojama paleisti Java programoms.
- jar - JAR failų ruošimo įrankis.
javac naudojimas ir parametrai
javac [options] [sourcefiles] [classes] [@argfiles]
Pagrindiniai “nustatymai”:
-cp arba -classpath - kabliataškais atskirti keliai iki jar failų ar aplankų su *.class failais. Nenurodžius naudojamas sistemos kintamasis CLASSPATH.
-d katalogas - nustatoma, į kokį katalogą patalpinti sukompiliuotą kodą.
-sourcepath sourcepath - nustatoma iš kur imti klasių kodą. Gali būti direktorijos, zip ir jar failai, atskiriami “;”. Klasės rastos classpath gali būti perkompiliuojamos, jei jos randamos ir sourcepath.
Sourcefiles - tai failai, kuriuos norime kompiliuoti.
classes - class failai, kurie apdorojami ieškant annotacijų. Plačiau neaptarsime.
@argfiles - options ir sourcefiles rinkiniai surašyti į failus
Kas yra JAR failai
- JAR = Java ARchive files. Tai iš esmės zip failai, su specialia struktūra.
- Idealiu atveju - tai nuo sistemos nepriklausantys vykdomi failai, kuriuose surenkami daugelis Java programai reikalingų failų (pvz paveikslėlių).
- Pagrindinėms operacijoms naudojamas jar įrankis, kuris yra dalis JDK.
Sukurti JAR failą: jar cf jar-file input-file(s)
- c - create, f - rezultatas turėtų būti failas, rašomi be tarpų, gali būti bet kokia tvarka.
- jar-file - norimo jar failo pavadinimas.
- input-file(s) - tarpu atskirtų failų ar direktorijų sąrašas (direktorijos bus automatiškai išskleidžiamos į failų sąrašus).
- Peržiūrėti JAR failo turinį : jar tf jar-file
- t - table of contents, rodo kad norime peržiūrėti turinį; f - reiškia, kad taikomės į failą, kurį nurodysime komandinėje eilutėje
- jar-file - pavadinimas failo, kurio turinį norime peržiūrėti.
Išskleisti JAR failą - jar xf jar-file [archived-file(s)]
- x - nurodoma, kad norime išskleisti jar failą; f - kad failą nurodysime komandinėje eilutėje.
- jar-file - failas, kurį norime išskleisti.
- [archived-file(s)] - failai JAR faile, kuriuos norime išskleisti. Jei nenurodyti detaliai - išskleidžiami visi.
- išskleistas JAR failo turinys bus patalpintas į direktoriją, kurioje vykdoma komanda, išlaikant vidinę JAR failo aplankų struktūrą.
Papildyti JAR failą: jar uf jar-file input-file(s)
- u - update, nurodo, kad bus pildomas failas; f - kad faila bus nurodytas komandinėje eilutėje.
- jar-file - failas, kurį norėsime papildyti.
- input-file(s) - tarpais atskirtų failų sąrašas, kuriuos norėsime įkelti į JAR failą.
- Failai jau esantys JAR’o viduje bus pakeisti naujais.
JAR failai: vykdymas
JAR failus galima paleisti (įvykdyti), JEI:
- JAR faile yra applet’as.
- JAR faile yra programa, paleidžiama iš komandinės eilutės.
- JAR faile yra kodas, kurį norima panaudoti kaip plėtinį. Sudėtingesnisatvejis, plačiau aptariamas http://docs.oracle.com/javase/tutorial/ext/index.htm
Programa paleidžiama iš komandinės eilutės ir supakuota į JAR failą paleidžiama taip:
java -jar jar-file
META-INF/MANIFEST.MF faile turi būti nurodyta Main klasė įrašant tokią eilutę: Main-Class: classname
JAR Manifest failai
- JAR failai gali būti pasirašomi elektroniniu būdu, tvarkomi kodo versijavimo sistemose, užtikrinti paketo vientisumą (sealing a package).
- Šioms funkcijoms reikalinga informacija saugoma manifest faile (META-INF/MANIFEST.MF, sukuriamas pagal nutylėjimą jar įrankio kuriant patį JAR failą)
Manifest failo keitimas JAR’e
jar cfm jar-file manifest-addition-file input-file(s)
- c - jar failo kūrimas, f - nurodymas, kad jar failo pavadinimas bus komandinėje eilutėje, m - nurodymas, kad esamas JAR failas apjungiamas su manifest addition-file turiniu.
- manifest-addition-file - tekstinis failas, kurio turiniu bus papildytas dabar egzistuojantis manifest failas.
Nustatant EntryPoint klasę galima naudoti komandą:
jar cfe jar-file-name package.MainClassName input-file(s)
- e - nurodo, kad bus nustatomas main klasės pavadinimas
- package.MainClassName - main klasės paketas ir pavadinimas atitinkamai.
Classpath
- Classpath - tai stringas iš nuorodų atskirtų “;” į vartotojo sukurtas klases. Šios nuorodos reikalingos įvairiems Java įrankiams ir programoms (pvz javac, java ir t.t.)
- Classpath nuorodos rodo į jar ir zip failus arba class failų direktoriją. Jei kalba eina apie class failus direktorijoje - užtenka nurodyti kelią iki aukščiausio lygio paketo direktorijos.
- Classpath galima nustatyti kaip sistemos kintamąjį ‘CLASSPATH’ arba kiekvienu atveju individualiai kviečiant java įrankius nurodžius parametrą -classpath.
- “*” wildcard naudojimas reiškia, kad visi direktorijoje esantys jar failai bus įtraukti į classpath, bet .class failai -ne.
- Visi *.class failai iš foo bus įtraukti į classpath įrašius tiesiog “foo”.
- Java paketų, nepaisant to, kad jie atvaizduojami kaip katalogai failų sistemoje, nereikia rašyti į classpath.
Classpath tvarkymas
1. Maven - paruošiama lokali bendra classpath direktorija, kuria visi sutartinai naudojasi per CLASSPATH sistemos kintamąjį.
2. Rankomis Eclipse “Project properties”->.classpath failas projekto direktorijoje. Jo padavimas programai paleidimo metu - Eclipse reikalas.
3. “Po plika Java” - nustatant -classpath/-cp parametrus arba sistemos kintamąjį CLASSPATH http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html
Classloader
- Classloading - tai mechanizmas, kuris ieško reikalingų klasių Java programos veikimui.
- Absoliučia dauguma atvejų naudojamas standartinis classloading mechanizmas, kurį pateikia JRE.
- Klasių ieškoma iš eilės šiose vietose:
- Bootstrap klasės: veikimui būtinos runtime klasės iš rt.jar, internationalization klasės iš i18n.jar ir pan.
- Instaliuoti plėtiniai specialiuose kataloguose: JRE instaliaciniame kataloge lib/ext; Specializuotuose OS plėtinių saugyklose (nuo Java6), pvz /usr/jdk/packages/lib/ext naudojant Solaris.
- Classpath nurodytuose jar ir zip failuose, direktorijose (tokia tvarka, kaip jie išvardinti classpath).
Komentarų nėra:
Rašyti komentarą