Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,956
Naujausias narys: saulyzas

Naujausi straipsniai

Paskutiniai nariai

Reikalas 1 savaitė
Rytis 3 savaitės
MaFetas 7 savaitės
ozzWANTED 8 savaitės
saulyzas10 savaitės
TOMIJUS11 savaitės
Jaunelis27 savaitės
lanis27 savaitės
And2s28 savaitės
Memento Mori33 savaitės
Quwqkibor35 savaitės
asirija39 savaitės
tomeem41 savaitės
weberiz44 savaitės
mRokass47 savaitės
kartoonas48 savaitės
grunskiz51 savaitės
Bruksnys51 savaitės
illusion51 savaitės
ordo52 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 3.145.40.120
Naujienų: 529
Straipsnių: 235
Temų: 52,589
Postų: 522,538
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 Lap. 30 15:11:14
Taip, vis dar up šypsosi

MaFetas
2024 Lap. 13 22:11:57
hey how, geras dar veikiantis saitas?

Jaunelis
2024 Lie. 25 11:07:43
Oho vis dar veikia svetainė akinanti šypsen Šimtas metų, matau Šaukykloje nuostalgija. Smagu panaršyt po forumą ir pažiūrėt senas temas šypsosi

And2s
2024 Lie. 17 19:07:04
2008 pirmą kart čia patekau, man buvo 10m ir čia pramokau programavimo.. smagu skaityti senas žinutes, tokia nostalgija akinanti šypsen ačiū Ozz kad saugoji šitą kultūrinį reliktą šypsosi

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

Š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
3314
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ų]