Pradinis
Pagalba
Užsisakyk!
- Reklamą
- Hostingą
- El. pašto dėžutę
Užsisakyk!
Įrankiai
Pasidalink
- Visos temos
Visų pirma, n00b'ai turėtų įveikti šį etapą(tai būtų įvadas į šį straipsnį): https://webdnd.com/kaip-sukompil...grama,s182 Taigi, šį kartą pabandysiu kiek galima išsamiau papasakoti apie: 1."paketų žymėjimą"(sealing packages) 2. "instrukcijų failus"(manifest files) 3. Kelių paketų kompiliavimą į jar failą panaudojant manifest failą. 4. Įeities taško[klasės](entry point) priskyrimą ir perrašymą(overriding) * Tiems kas nežino, JAR - tai "Java Archive", kitaip tariant Java klasių archyvo failas, kuris įtraukia į save visas nurodytas *.class failų galūnių klases. Tariame kad turime situaciją: Mūsų programa turi - 3 paketus ir dvi main klases. Kiekvienas paketas turi po 3 klases: Paketo nr.1 turinys: Automobilis.java: package autobusu_parkas; Automobilis.java: package autobusu_parkas; Vairuotas.java: package autobusu_parkas; --------------- Paketo nr.2 turinys: Main.java: package troleibusu_parkas; Troleibusas.java: package troleibusu_parkas; Paketo nr.3 turinys: Main.java: package taksi_parkas; Taksi.java: package taksi_parkas; -------------------------------------- Taigi turime 3 paketus: autobusu_parkas troleibusu_parkas taksi_parkas Ir norime sukompiluoti jar failą, kuriame įeities failas būtų klasė "Main.java". Kadangi jį turi net du paketas, ir mūsų Java kompiliatorius nežinos kurią klasę mums reikia paleisti, nes turime nustatyti įeities klasę. Taigi teksto redaktoriumi(pvz. Notepad++) susikuriame naują failą "manifest.txt" ir jį išsaugome į mūsų programos direktoriją, t.y. ten pat kur ir mūsų programos visi paketai su failais, pvz.: "C:\mano_java_programos\" Manifest failas gali turėti nemažai parametrų, bet pagrindiniai būtų šie: Įeities taškas(entry-point): "Main-Class:" - atitinkamai "paketo_vardas.klasė" arba tiesiog "klasė", jeigu neturime (kelių) paketų. Šiuo parametru nurodome įeities į programą tašką. T.y. kuri kodo dalis bus iškviesta paleidus jar programą. Komentarai: "X-Comment:" - manifest failo komentarai JAR archyvų žymėjimas: "Sealed: " - jeigu 'true' - tai visas archyvas pažymėtas. Konkrečių paketų žymėjimas: "Name:" - (ne)pažymėto paketo pavadinimas "Sealed:" - true - paketas pažymėtas, false - paketas nepažymėtas. [Išeities parametras] "Manifest-Version:" - manifest failo versija. Įprastai: 1.0 [Išeities parametras] "Created-By:" - 1.6.0 (Sun Microsystems Inc.) ----------------- Paketų žymėjimas mums reikalingas tam, jeigu norime būti garantuoti, kad visos klasės pakete yra sukurtos iš to paties kodo šaltinio. Pastaba: tekstinis manifest failas turi baigtis LF(line feed) arba CR(carriage return) simboliu. (n00bams: LF - tai naujos eilutės simbolis, trumpiau tariant [Enter] klavišas, pagrindinai Windows terpės simbolis CR - tai tas pats naujos eilutės simbolis, tiksliau pavadintas būtų "fiktyvi nauja eilutė". Kažkas panašaus iš praktiškos būtų [Shift]+[Enter] kombinacija MS Word programoje. CR laikomas labiau Macintosh(MAC) standartu.) Jeigu norime pažymėti/nežymėti konkretaus paketo, manifest.txt faile kiekvienam paketui įrašome, pvz. Name: programos_paketai/pirmas_paketas/ Jeigu norime, kad visi paketai, apibrėžti konkrečiame jar faile būtų pažymėti, užtekta tiesiog manifest failo pradžioje įrašyti eilutę: Sealed: true Ši eilutė reiškia, kad pats JAR failas yra pažymėtas(sealed), t.y. kad visi paketai apibrėžti tame JAR faile yra pažymėti, nebent buvo perrašyti konkrečiam paketui atskirai[prieš tai buvęs pavyzdys](overridden on a per-package basis). Jeigu norime išskirti vieno žymėjimą: tai mūsų "manifest.txt" failas preliminariai turėtų atrodyti taip: Main-Class: troleibusu_parkas.main Jeigu norime pažymėti visą JAR paketą(JAR sealing), mūsų "mainfest.txt" failas turėtų atrodyti taip: Sealed: true Tačiau mūsų programos atveju, ir paprastumo bei aiškumo dėlei nenaudosime nei konkrečių klasių, nei archyvų žymėjimo, todėl būsų manifest.txt failas bus labai elementarus: Main-Class: troleibusu_parkas/Main.class (Čia mėlynai pažymėtas mūsų pagrindinio paketo pavadinimas, po "/" - pagrindinė to paketo klasė) Dar keletas pastabų: * Kompiliatorius automatiškai sukurs 'default' MANIFEST.MF failą, kuris bus META-INF direktorijoje. * Manifest failas nebūtinas jeigu turime vieną paketą. * Default manifest failą taip pat galima redaguoti. ---------------- Taigi failus sukūrėme, dabar reikia visą tą programą sukompiliuoti ir paleisti: Atsidarę CMD(Windows XP) darom: ------------------------------------------ 1. Atsidarom java kompiliatoriaus direktoriją: cd Program Files\Java\jdk1.6.0_16\bin 2. Sukompiliuojama *.java failus į *.class objektus. javac C:\mano_java_programos\programa1\autobusus_parkas\*.java C:\mano_java_programos\programa1\troleibusu_parkas\*.java C:\mano_java_programos\programa1\taksi_parkas\*.java 3. Sukompiliuojame *.class objektus(failus) į *.jar failą. jar cfm transportas.jar Manifest.txt autobusu_parkas\*.class troleibusu_parkas\*.class taksi_parkas\*.class Arba galime naudoti ne "*.class", o tiesiog '*'(wildcard'ą), jeigu visi failai direktorijoje yra class galūnės: jar cfm transportas.jar Manifest.txt autobusu_parkas\* troleibusu_parkas\* taksi_parkas\* O jeigu norime nurodyti pilną kelią, rašome: jar cfm transportas.jar Manifest.txt C:\mano_java_programos\autobusu_parkas\* C:\mano_java_programos\troleibusu_parkas\* C:\mano_java_programos\taksi_parkas\* * Galimi parametrai: v - (verbose) Išvesti į STDOUT informaciją apie kiekvieną failą kuris bus įtrauktas į JAR archyvą. c - (Create) nurodome, kad norime sukurti JAR failą. f - (File) nurodome, kad norime gauti rezultatą į failą, vietoje to kad gautume jį į konsolės(cmd) ekraną(STDOUT). 0 - (0 compression) netaikyti duomenų suspaudimo JAR failui. m - (manifest) nurodome, kad informacija imsime iš 'manifest' failo. M - (eMpty manifest) nurodome, kad nebūtų sukurtas JOKS 'manifest' failas(net ir 'default'). e - (Entry) nurodome, kad įeities tašką nurodysime komandinėje eilutėje, o ne imsime jį iš manifest failo, pvz.: jar cfe programa.jar paketas_nr1.Main paketas_nr1\Main.class C - (Catalog) keisti direktorijas kompliavimo metu, pvz. jar cf ImageAudio.jar -C images . -C audio . Su paveiksliukų galūnėmis failus failus imsime iš direktorijos 'images', o su muzikinių failų galūnėmis, iš direktorijos 'aubio' 4. Paleidžiame mūsų sukompiliuota java jar failą. java -jar "C:\mano_java_programos\transportas.jar" ----------------------- Viskas :). Jeigu turime klausimų, klauskite forume - pasistengsiu į juos atsakyti. * n00b'ai pirmiausiai turėtų viską suprasti iš pirmojo straipsnio, o tik tada jau gilintis į šį. Straipsnį parengė @ozzWANTED Copyright 2009 © PhpFusion-Lt.com @ozzWANTED | Straipsnio informacijaAutoriusozzWANTED Parašymo data 2009 lapkričio 22 20:11:58 Komentarų 3 Skaityta 3305 Spausdinti |
|