Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Setovanje classpatha ...

[es] :: Java :: Setovanje classpatha ...
(Zaključana tema (lock), by veljaradenkovic) (TOP topic, by veljaradenkovic)

[ Pregleda: 12554 | Odgovora: 0 ] > FB > Twit

Postavi temu

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
*.ptt.yu.

ICQ: 147120023


Profil

icon Setovanje classpatha ...24.03.2005. u 23:34 - pre 231 meseci
Classpath pokazuje Java izvršnim fajlovima gde se nalaze *.class fajlovi koji nisu deo ili
ekstenzija java platforme.

Kada startujete javu (JVM) ona pronalazi i ucitava ove fajlove sledecim redosledom

1. Pretrazi standardan set paketa (paketi koji cine java platformu).
To su rt.jar, i18n.jar i nalaze se u SDK_INSTALL_LOCATION/jre/lib direktorijumu.

2. Pretrazi lokaciju u kojoj se standardno nalaze paketi ekstenzije a to je SDK_INSTALL_LOCATION/jre/lib/ext.

3. Pretrazi lokacije eksplicitno navedene od strane programera ili korisnika java programa.
Ove lokacije se navode koriscenjem -classpath (-cp) opcije koja se navodi u komandnoj liniji.
Ovo je preporuceni nacin.
Takodje moguće je sistemskoj varijabli CLASSPATH za vrednost dodeliti ove lokacije.


Setovanje sistemske varijable CLASSPATH nije preporucljivo jer je vezano za konkretan sistem (PC).
Ne verujem da zelite da se pri distribuciji vase aplikacije nadjete u neprijatnom objasnjavanju tipa
'Samo da setujem classpath ...', 'Samo da vam stavim ovaj jar ovde', itd.

Prosledjivanje classpatha preko komandne linije je bolje jer nije vezano za konkretan sistem i moguce je
upotrebiti relativne putanje do paketa koji sadrze klase koje su potrebne za izvrsavanje vaseg programa.

Nekoliko primera:

Napomena: Setujte PATH sistemsku varijablu (objasnjeno u TOP temi 'Kako poceti sa programiranjem u javi') kako bi
vam java izvrsni fajlovi bili dostupni iz komandne linije bez navodjenja apsolutne putanje do njih.

a) Koriscenje default paketa tj. ne koriscenje paketa (nije preporucljivo), klasa nije zavisna od drugih paketa (biblioteka),
i nije zapakovana (jarovana), tj.pokrecemo *.class fajl.

Izvorni kod:
Code:
public class Primer {
    public static void main(String args[]) {
        System.out.print("Prvi Java program");
    }
}


Nacin kompajliranja programa:
Code:
cd DIREKTORIJUM_U_KOM_SE_NALAZI Primer.java
javac Primer.java

Unutar DIREKTORIJUM_U_KOM_SE_NALAZI trebalo bi da se nalazi produkt prethodnog koraka tj. Primer.class


Pokretanje programa:
Code:

java -cp "." Primer


Izlaz:
Code:
Prvi Java program


b) Klasa se nalazi u direktorijumu TEKUCI_DIREKTORIJUM/net/lusys/ i zelimo da iskoristimo prednosti koje nam pruzaju java paketi.
Ni ovaj primer tj. direktorijumi i *.class fajl nisu zapakovani (jarovani).

Iznad koda navodimo paket koji treba da odgovara strukturi direktorijuma (izuzimajuci tekuci direktorijujm) ...

Izvorni kod:
Code:

package net.lusys;

public class Primer {
    public static void main(String args[]) {
        System.out.print("Prvi Java program");
    }
}


Nacin kompajliranja programa:
Code:
cd TEKUCI_DIREKTORIJUM
javac net/lusys/Primer.java


Pokretanje programa:
Code:

java -cp "." net.lusys.Primer


Izlaz:
Code:
Prvi Java program



c) Klasa se nalazi u direktorijumu TEKUCI_DIREKTORIJUM/net/lusys i zelimo da iskoristimo prednosti koje nam pruzaju java paketi.
Direktorijumi i *.class fajl su zapakovani (jarovani) u Primer.jar i program koristi klase sadrzane u paketu xercesImpl.jar koji
se nalazi u TEKUCI_DIREKTORIJUM/lib.

Izvorni kod:
Code:

package net.lusys;

import org.apache.xerces.util.*;

public class Primer {
    public static void main(String args[]) {
        System.out.print("Prvi Java program");
    }
}


Kompajliranje:
Code:

cd TEKUCI_DIREKTORIJUM
javac -classpath "lib/xercesImpl.jar" net/lusys/Primer.java


Pakovanje (jarovanje) direktorijuma i njihovog sadrzaja:
Code:

jar cf Primer.jar -C . net



Rezultat prethodne komande bi trebao da bude kreiran Primer.jar u TEKUCI_DIREKTORIJUM-u.

Pokretanje programa:
Code:

java -cp "Primer.jar;lib/xercesImpl.jar" net.lusys.Primer


Napomena: Primetite upotrebu relativne putanje 'lib/xercesImpl.jar'.

TIP 1: Posto ste ovde mozda nije na odmet da napomenemo da fajl koji sadrzi java klasu, interfejs treba da ima naziv koji 'case sensitive' odgovara nazivu te klase tj. interfejsa.
Takodje, deklaracija paketa treba da odgovara hijerarhiji direktorijuma u kojoj se izvorni fajl nalazi tj. TEKUCI_DIREKTORIJUM/net/lusys => package net.lusys;.
TIP 2: Visestruke CLASSPATH putanje se odvajaju karakterom ; i pri setovanju sistemske varijable i pri prosledjivanju preko komandne linije.
TIP 3: Tacka "." oznacava tekuci tj. direktorijum u kome se nalazite.
TIP 4: Prikaz dodatnih opcija navedenih java izvrsnih programa se dobija prosledjivanjem argumenta -? ili -help.
Primer: java -?
TIP 5: Ovo je bitno da se razume ali cete radeci kao java programer koristiti neko moderno razvojno
okruzenje kao sto je eclipse koje ce vam u mnogome ovaj posao olaksati.

U sledecem broju videcemo sta je to manifest fajl.


Zbog preglednosti teme molim vas da komentare i eventualne sugestije napisete u odvojenoj temi.


 
0

[es] :: Java :: Setovanje classpatha ...
(Zaključana tema (lock), by veljaradenkovic) (TOP topic, by veljaradenkovic)

[ Pregleda: 12554 | Odgovora: 0 ] > FB > Twit

Postavi temu

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.