Navigacija

Vartotojų tinkle

Prisijungusių svečių: 48
Prisijungusių narių: 0
Prisijungusių narių nėra

Registruoti nariai: 25,952
Naujausias narys: tomeem

Naujausi straipsniai

Paskutiniai nariai

tomeem 1 savaitė
Reikalas 2 savaitės
weberiz 4 savaitės
mRokass 7 savaitės
kartoonas 8 savaitės
iaescortsmap 8 savaitės
ozzWANTED 9 savaitės
grunskiz10 savaitės
Bruksnys11 savaitės
illusion11 savaitės
ordo12 savaitės
Jurgaila13 savaitės
originalcs1613 savaitės
Rytis13 savaitės
halis15 savaitės
junkus18 savaitės
morlis18 savaitės
Majakas19 savaitės
andsoft20 savaitės
picolee9021 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 3.143.17.127
Naujienų: 529
Straipsnių: 235
Temų: 52,584
Postų: 522,522
Postų pask. parą: 0
Shout'ų pask. parą: 0
P.S.C. pask. parą: 0
Nuorodų kataloge: 13

Lankomumo Statistika

Peržiūrų šiandien: 22

Iš viso peržiūrų: 22948724

Prisijungti

REGISTRUOTIS
Nario vardas

Slaptažodis



Pamiršai slaptažodį?
Paprašyk naujo

Aktyvuoti save

Šaukykla

Jei norite rašyti žinutes, turite prisijungti.

ozzWANTED
2024 Sau. 17 01:01:00
Desperatiškus komentarus šaukykloje su accountu po mėnesio prasibuvimo, ištryniau. Pasaulis ir taip juodas. Įjungiam šviesą, prašviesės. šypsosi

Majakas
2023 Gru. 10 19:12:39
Negaliu patikėti jog žinutės/pranešimai visi yra nuo 2008 m akinanti šypsen

Žmogus
2023 Rugs. 7 21:09:14
O gal BloodKiller pasijungs?

Apocal
2023 Rugs. 2 18:09:23
Nu davai nuveikiam kažką akinanti šypsen. Prisijungti kada visi čia akinanti šypsen.

Apocal
2023 Rugs. 2 00:09:18
Šiaip atėjau pažiūrėti ar dar lopas nesby yra ar koks ten buvo.

Šaukyklos archyvas

Apklausa

Ar esate patenkinti lietuviško vertimo kokybe?

Taip!

Taip, bet yra ką taisyti (parašysiu komentaruose)

Ne

Norėdamas balsuoti turite prisijungti.
Archyvas
Reklama 400x60
Java jar multi-paketo kompiliavimas naudojant manifest failą
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;

public class Automobilis {

      public void vaziuoti() {

           // <... DO STH ...>

      }

}





Automobilis.java:

package autobusu_parkas;

public class Variklis extends Automobilis {

      public void pakeisti_alyva() {

           // <... DO STH ...>

      }

}





Vairuotas.java:

package autobusu_parkas;

public class Vairuotojas {

      public void vaziuoti() {

           // <... DO STH ...>

      }

}





---------------

Paketo nr.2 turinys:



Main.java:

package troleibusu_parkas;



import autobusu_parkas.*;

import taksi_parkas.*;



public class Main {

      public static void main(String[] args) {

            System.out.println("Ieitis nr.2");

      }

}





Troleibusas.java:

package troleibusu_parkas;

public class Troleibusas {

      public void vaziuoti() {

           // <... DO STH ...>

      }

}







Paketo nr.3 turinys:

Main.java:

package taksi_parkas;



import autobusu_pakas.*;

import troleibusu_parkas.*;



public class Main {

      public static void main(String[] args) {

            System.out.println("Ieitis nr.3");

      }

}





Taksi.java:

package taksi_parkas;

public class Taksi {

      public void iskviesti() {

           // <... DO STH ...>

      }

}



--------------------------------------





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/

Sealed: true





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

Name: autobusu_parkas/

Sealed: false



Name: trolebusu_parkas/

Sealed: true



Name: taksi_parkas/

Sealed: true









Jeigu norime pažymėti visą JAR paketą(JAR sealing),

mūsų "mainfest.txt" failas turėtų atrodyti taip:

Sealed: true



Main-Class: troleibusu_parkas/Main.class









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 informacija

Autorius
ozzWANTED
Parašymo data
2009 lapkričio 22 20:11:58
Komentarų
3
Skaityta
3258
Spausdinti Spausdinti
Komentarai
ozzWANTED 2009 lapkričio 22 20:11:29
Jeigu kam nors kils kokių elementarių klausimų, arba labai grandiozinių klausimų, tai tam reikalui sukūriau spec. temą forume:
https://webdnd.com/java-klausima...ing,t22326

O šiaip tai, jeigu šiame forume yra bent 10 proc. žmonių suprantantančių pilnai šį straipsnį, tai vadinasi mes dar turim vilties kad mūsų jaunieji proto šviesuoliai dar tikrai nemažai ką moką šypsosi.

Nors praktiškai čia yra Java kompiliavimo pagrindai, bet esmė ta, kad NetBeans'u naudojausi jau turbūt bemaž du metus ir, kadangi ten užtenka visados tik F11, šitas dalykas aktualus pasidarė kai kelioms įmonėms teko daryti viską turint tik linuksinę komandinę eilutę. Todėl tam reikalui reikėjo šį dalyką ir įsisavint. Na o šį straipsnį parašiau dėl alternatyvų Windows platformai, jeigu labiau domina architektūra ir norite gilintis į detales.
ArturasS 2009 lapkričio 23 06:11:26
Neblogai padirbėjai, na šiek tiek sužinojau. Šaunuolis šypsosi
iFaB 2010 sausio 13 17:01:45
Praverte tikrai mldcmerkia akį
Rašyti komentarą
Prisijunkite, norėdami parašyti komentarą.
Reitingai
Balsuoti gali tik nariai.

Prašome prisijungti arba prisiregistruoti.

Nuostabu! Nuostabu! 100% [1 Balsas]
Labai gerai Labai gerai 0% [Nėra balsų]
Gerai Gerai 0% [Nėra balsų]
Patenkinamai Patenkinamai 0% [Nėra balsų]
Blogai Blogai 0% [Nėra balsų]