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

Problem u startu

[es] :: Java :: Problem u startu

[ Pregleda: 1444 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NikolaVeber
neradnik na porodiljskom bolovanju
Karlsruhe

Član broj: 5115
Poruke: 1249
*.ptt.yu

Jabber: nikolaveber@jabber.org
ICQ: 121532865


Profil

icon Problem u startu23.12.2003. u 13:36

Pozdrav !

Krenuo sam sa primerima iz knjige Java2 od Zukowskog. I zaglavio vec na prvom :(
Mislio sam da je greska u kucanj... ali sam onda kopirao source sa cd-a koji ide uz knjigu, i isto.
Code:

public class HelloWorld{
    public static void main(String argumenti[]){
        System.out.println("Hello, World");
    }
}

Kod koji je verovatno mnogima poznat :). Javac prodje bez problema i ne prijavljuje gresku, ali kada dam: java HelloWorld dobijem sledecu gresku :
Exception in thread "main" java.lang.NoClassDefFoundError: C:\java\HelloWorld

Pomagajte !
Instaliran je j2sdk1.4.0 na winXP.


blog.sun.com/srbija
Java User Group Karlsruhe
Studiranje u Nemačkoj

Officer, I saw the driver who hit me - his name was Johnny Walker.
23.12.2003. u 13:36 

tweeester
Ivan Arandjelovic
bg yu

Član broj: 724
Poruke: 864
*.kc.vicert.com

Sajt: www.javasvet.net


Profil

icon Re: Problem u startu23.12.2003. u 14:00
Problem je prost, java ne zna gde da nadje tvoju klasu (HelloWorld.class fajl). Ja znam (tj. pretpostavljam) da ti se nalazi u tekucem direktorijumu odakle pokreces program ali java to ne zna :) Problem resi ovako:
c> set CLASSPATH=%CLASSPATH%;.\

tj. dodaj tekuci direktorijum u environment veriablu pod imenom CLASSPATH. Ova variabla odredjuje gde se traze klase. Pazi da kad imas klasu u nekom paketu, naprimer com.test.ImeKlase onda taj class fajl mora da se nalazi u nekom direktorujumu kao naprimer:
C:\classes\com\test
a u CLASSPATH moras da dodas samo osnovni dir, tj samo:

C:> set CLASSPATH=%CLASSPATH%;c:\classes

Hope this helps,
Pozdrav

p.s. Obrati paznju da setovanje CLASSPATH-a vazi samo za DOS prozor u kome trenutno radis, u drugim prozorima to nece biti vidljivo.
<< tko leti vrijedi, tko ne leti ne vrijedi >>
23.12.2003. u 14:00 

mucky
Aleksandar Mastilović
Novi Sad - Srbija

Član broj: 237
Poruke: 409
*.22.EUnet.yu



Profil

icon Re: Problem u startu24.12.2003. u 16:02
Citat:
NikolaVeber:
Code:

public class HelloWorld{
    public static void main(String argumenti[]){
        System.out.println("Hello, World");
    }
}

Kod koji je verovatno mnogima poznat :). Javac prodje bez problema i ne prijavljuje gresku, ali kada dam: java HelloWorld dobijem sledecu gresku :
Exception in thread "main" java.lang.NoClassDefFoundError: C:\java\HelloWorld

Pomagajte !
Instaliran je j2sdk1.4.0 na winXP.



Treba da pise
Code:

public static void main(String[] argumenti){
}


a ne

Code:

public static void main(String argumenti[]){
}
24.12.2003. u 16:02 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.InfoSky.Net

Sajt: localhost


Profil

icon Re: Problem u startu24.12.2003. u 16:24
prvo i drugo su potpuno ekvivalentni u javi, samo se preporučuje prvo, jer je valjda čitljivije...
24.12.2003. u 16:24 

NikolaVeber
neradnik na porodiljskom bolovanju
Karlsruhe

Član broj: 5115
Poruke: 1249
*.ptt.yu

Jabber: nikolaveber@jabber.org
ICQ: 121532865


Profil

icon Re: Problem u startu25.12.2003. u 14:03
Hvala inace, to je source iz knjige... pozdrav autorima

Inace, da li to definise promenljivu tipa String[] sa imenom "argumenti", ili je nesto drugo u pitanju ?
blog.sun.com/srbija
Java User Group Karlsruhe
Studiranje u Nemačkoj

Officer, I saw the driver who hit me - his name was Johnny Walker.
25.12.2003. u 14:03 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13031
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Problem u startu25.12.2003. u 14:57
String[] arg i String arg[] rade istu stvar. Kreiraju niz objekata tipa String pod imenom arg. Sasvim je svejedno koju ćeš sintaksu koristiti, barem što se kompajliranja tiče. mucky, malo si pogrešio.
25.12.2003. u 14:57 

veljaradenkovic
Velja Radenkovic
Beograd

Moderator
Član broj: 2977
Poruke: 280
*.ppp-bg.sezampro.yu

ICQ: 147120023


Profil

icon Re: Problem u startu25.12.2003. u 15:26
Cisto da ispostujemo (java <=> memorija).

String[] arg i String arg[] ne kreiraju nista.

25.12.2003. u 15:26 

mucky
Aleksandar Mastilović
Novi Sad - Srbija

Član broj: 237
Poruke: 409
*.27.EUnet.yu



Profil

icon Re: Problem u startu25.12.2003. u 15:54
Evo sad sam probao i stvarno rade obe varijante :)

Svasta, 3 godine radim sa javom i nigde nisam sreo taj nacin deklarisanja niza :)

Problem je definitivno u CLASSPATH :)

I ajde da malo cepidlacimo

Citat:
Gojko Vujovic:
String[] arg i String arg[] rade istu stvar. Kreiraju niz objekata tipa String pod imenom arg.


Code:
String[] argumenti
(ili
Code:
String argumenti[]
kako volis:) ) NE kreira niz nego samo pokazivac na niz.
Code:
String[] argumenti = new String[50]
kreira novi niz od 50 stringova (od kojih svaki opet moras inicijalizovati bilo sa
Code:
new String("blah")
ili dodelom vec kreiranog objekta tipa String :)

Ovo sto je Gojko naveo radi samo ako tako deklarises niz u zaglavlju metoda.
25.12.2003. u 15:54 

NikolaVeber
neradnik na porodiljskom bolovanju
Karlsruhe

Član broj: 5115
Poruke: 1249
*.ptt.yu

Jabber: nikolaveber@jabber.org
ICQ: 121532865


Profil

icon Re: Problem u startu25.12.2003. u 20:19
Znaci li to da String[] imeStringa zauzima mesto u stack memoriji za jedan pokazivac, a kasnije vrednost smesta u heap ?
blog.sun.com/srbija
Java User Group Karlsruhe
Studiranje u Nemačkoj

Officer, I saw the driver who hit me - his name was Johnny Walker.
25.12.2003. u 20:19 

overflow
Goran Milosavljević
Beograd

Član broj: 396
Poruke: 345
*.verat.net

ICQ: 106825659
Sajt: www.paradise.co.yu


Profil

icon Re: Problem u startu28.12.2003. u 11:31
Tačno tako.
Tek se sa:
Code:

imeStringa  = new String("Test");

alocira mem. prostor (u heap-u) za String u koji se smesta konkretna vrednost - imeStringa kao referenca ostaje u stack-u do kraja izvrsenja metode.
Kao i u mnogim srodnim (novijim) jezicima "IV generacije", ispod haube su sve pointer-i (u java terminologiji: reference).
Sve sto je besmislenije, utoliko je bolje.
prof Jaukovic [FON] : "Kolega, jeste l' nesto rekli ili samo pricate ?"
28.12.2003. u 11:31 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13031
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Problem u startu28.12.2003. u 12:33
Ako ono ne inicijalizuje taj niz "argumenti" kao što vi kažete, kako onda odmah posle tog reda mogu da pristupim njegovim elementima ako je program pokrenut sa parametrima?

Hajde prvo to odgovorite da razjasnimo ovo do kraja, molim vas.

Ja sam govorio o upotrebi te sintakse u parametrima koji se prosleđuju main funkciji.
28.12.2003. u 12:33 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13031
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Problem u startu28.12.2003. u 12:35
Citat:
mucky:
Ovo sto je Gojko naveo radi samo ako tako deklarises niz u zaglavlju metoda.


Ovaj red sam kasno video, pre nego što sam napisao prethodnu poruku, tako da je već odgovoreno na pitanje.. pričao sam o zaglavlju.
28.12.2003. u 12:35 

veljaradenkovic
Velja Radenkovic
Beograd

Moderator
Član broj: 2977
Poruke: 280
*.ptt.yu

ICQ: 147120023


Profil

icon Re: Problem u startu28.12.2003. u 20:12
Ako mislite da sporni izraz kreira bilo kakav niz na bilo kom mestu (pa i u main metodi)
onda niste u pravu.

Ako ne mislite onda izvinite na obrazlozenju koje sledi.
Code:

public class Proba {

    /**
     * 
     */
    public Proba() {
    
    }

    public static void main(String[] args) {
        /*deklaracija*/
        int[] nizOdTriBroja;
        /*inicijalizacija*/
        nizOdTriBroja=new int[]{1,2,3};
        new Proba().funkcija(nizOdTriBroja);
    }
    //
    //
    //
    private void funkcija(int[] brojevi){
        for(int i=0;i<=100;i++){
            System.out.println(brojevi[i]);
        }
    }
}


Ko sto vidite u gornjem primeru mozes da
se obratis stotom clanu niza i ako on ne postoji,.. i program se kompajlira;
ali krkne kad se pokrene.

Tako da to sto ti mozes da se obratis
parametru f-cije u njenom telu ne znaci da on postoji u trenutku kad
mu se ti obracas i to ne moze ni jedan kompajler da zna pre nego sto se
f-cija pozove a onda ako ga nema dodje do runtime Exceptiona.

Sto se tice procedure main zamisli da JVM radi ovako:

Code:

String parametar1="parametar1";//procita prvi parametar sa console
String parametar2="parametar2";//procita drugi parametar sa console
String parametarN="parametarN";//procita n-ti parametar sa console
String[] args=new String[]{parametar1,parametar2,parametarN};
main(args);




Osim toga ukucajte u google nesto kao Definitions vs. Declarations.
pa procitajte.

Ako ovo nije tacno ubicu Jaukovica sto me naucio pogresno.
28.12.2003. u 20:12 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


Profil

icon Re: Problem u startu28.12.2003. u 21:58
daj ne brukajte se više raspravom o tome da li je deklaracija isto što i instanciranje...

naravno da nije. možda se neko loše odrazio, ali ne verujem da iko to ovde misli. zato dosta više..
28.12.2003. u 21:58 

[es] :: Java :: Problem u startu

[ Pregleda: 1444 | Odgovora: 13 ]

Postavi temu Odgovori

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