Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,956
Naujausias narys: saulyzas

Naujausi straipsniai

Paskutiniai nariai

saulyzas 1 savaitė
MaFetas 1 savaitė
TOMIJUS 2 savaitės
ozzWANTED 2 savaitės
Reikalas11 savaitės
Jaunelis17 savaitės
lanis17 savaitės
And2s18 savaitės
Memento Mori23 savaitės
Quwqkibor25 savaitės
asirija29 savaitės
tomeem31 savaitės
weberiz35 savaitės
mRokass37 savaitės
kartoonas38 savaitės
grunskiz41 savaitės
Bruksnys41 savaitės
illusion41 savaitės
ordo42 savaitės
Jurgaila43 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 18.116.20.108
Naujienų: 529
Straipsnių: 235
Temų: 52,588
Postų: 522,537
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.

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

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

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