Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,957
Naujausias narys: keistuole

Naujausi straipsniai

Paskutiniai nariai

keistuole 1 savaitė
Gizmis 2 savaitės
Reikalas 2 savaitės
Rytis12 savaitės
MaFetas16 savaitės
ozzWANTED17 savaitės
saulyzas19 savaitės
TOMIJUS20 savaitės
Jaunelis36 savaitės
lanis36 savaitės
And2s37 savaitės
Memento Mori42 savaitės
Quwqkibor44 savaitės
asirija48 savaitės
tomeem50 savaitės
weberiz53 savaitės
mRokass56 savaitės
kartoonas57 savaitės
grunskiz60 savaitės
Bruksnys60 savaitės

Informacija:


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

Gizmis
2025 Kov. 15 14:03:50
OMG, smagu matyt sita puslapi veikianti

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

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