PDA

Prikaži potpunu verziju : [Java] Greška prilikom kompajliranja i izvršavanja programa


mcdhappy80
20.8.2009, 15:13
U attachmentu prilazem sliku na kojoj se najbolje vidi sta je problem.
Kao što se vidi komanda za kompajliranje JAVAC uopšte se ne prepoznaje a komanda za pokretanje JAVA izbacuje exception grešku.
Na kompu su mi instalirani JDK 1.6.0_14 i JRE 6, kao i NetBeans IDE 6.7.1.
Programi kreirani u NetBeans-u rade normalno, ne mogu da kompajliram i pokrenem iz komandnog prompta.
Jel zna neko šta je ovde problem i kako da rešim?
Hvala.

bvitnik
20.8.2009, 15:45
1) javac ti mora biti u PATH-u (a obično nije). Podesi PATH u Control Panel->System->Advanced->Environment Variables.

2) prethodno kompajlirani java programi se pokreću pomoću "java ime_klase". Ne prosleđuješ ime fajla nego klase koja sadrži main() metodu.

mcdhappy80
20.8.2009, 16:47
1) javac ti mora biti u PATH-u (a obično nije). Podesi PATH u Control Panel->System->Advanced->Environment Variables.

A gde se onda nalazi javac (tj. koja bi putanja trebala da bude)? Koji je to fajl na koga bi trebalo da glasi CLASSPATH putanja? Ovo me muči već neko vreme, tražio sam odgovor na netu ali bezuspešno.


2) prethodno kompajlirani java programi se pokreću pomoću "java ime_klase". Ne prosleđuješ ime fajla nego klase koja sadrži main() metodu.

Ovo mi je jasno. Sa JAVA [ime_fajla].class mogu da pokrenem samo *.class fajl koji je prethodno kompajliran JAVAC komandom.

Hvala.

bvitnik
20.8.2009, 18:54
1) Nigde nisam pominjao CLASSPATH. Rekao sam PATH. "javac" se nalazi u "bin" direktorijumu, tamo gde si instalirao JDK. To valjda znaš. Nešto tipa "C:\Program Files\Java\jdk1.6.0_14\bin"

2) Kao što rekoh, ne ide ime fajla nego ime klase u nekom od .class fajlova. Znači pišeš "java HelloWorld" gde je "HelloWorld" klasa u fajlu "hello.java", npr. Kada napišeš nešto ovako "java imefajla.ext", on će ustvari tražiti paket koji se zove "imefajla" i klasu koja se zove "ext", što nije ono što ti očekuješ.

mcdhappy80
20.8.2009, 22:45
1) Nigde nisam pominjao CLASSPATH. Rekao sam PATH. "javac" se nalazi u "bin" direktorijumu, tamo gde si instalirao JDK. To valjda znaš. Nešto tipa "C:\Program Files\Java\jdk1.6.0_14\bin"

Jel mislis na ovaj path (pogledaj attachment)?

bvitnik
20.8.2009, 23:13
Da. Sistemski PATH, jedan jedini :).

Kad se kaže PATH, misli se na upravo tu "environment variable". Definisana je na nivou sistema. Na drugim operativnim sistemima se isto zove i istu ulogu ima. Ako u Command Prompt-u kucaš "path", ispisace ti vrednost ove "environment variable" (ne znam kako elegantno da prevedem).

mcdhappy80
21.8.2009, 18:04
Da. Sistemski PATH, jedan jedini :).

Kad se kaže PATH, misli se na upravo tu "environment variable". Definisana je na nivou sistema. Na drugim operativnim sistemima se isto zove i istu ulogu ima. Ako u Command Prompt-u kucaš "path", ispisace ti vrednost ove "environment variable" (ne znam kako elegantno da prevedem).
Varijabla okruzenja, mozda? :)
Kada udjem u Path vrednost promenljive mi je postavljena na:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Sy stem32\Wbem;C:\Program Files\QuickTime\QTSystem\;C:\PROGRA~1\DISKEE~1\DIS KEE~1\
Koliko vidim ovde ima vise od jedne putanje a odvojene su sa ";". Da li bez problema mogu da dodam jos jednu promenljivu, ili treba ove da obrisem (i da li je ta promenljiva u mom slucaju C:\Program Files\Java\jdk1.6.0_14\bin)?
Jel ovo znaci da cu onda sa bilo kog mesta (foldera, particije) moci da pokrecem javac i java komande?
Jel moze neko da mi na Srpskom objasni cemu sluzi Classpath putanja i na koju vrednost bi ona trebala da bude postavljena (citao sam zvanican dokument na Sun.com sajtu ali mi nije bilo jasno)?
Hvala.

mcdhappy80
25.8.2009, 21:37
Dodao sam ovu putanju u path C:\Program Files\Java\jdk1.6.0_14\bin
Sada mi JAVAC komanda radi sa bilo koje particije a JAVA nece, zasto?
Hvala.

Cartman
26.8.2009, 0:48
Preciziraj onaj deo "...a JAVA nece...".
Npr., kako izgleda komanda (java ???) koju nakucaš u Prompt-u i šta ti posle njenog izvršavanja piše kao objašnjenje za grešku?

bvitnik
26.8.2009, 1:04
"java" komanda/program se ne nalazi u "C:\Program Files\Java\jdk1.6.0_14\bin" već u "C:\Program Files\Java\jre1.6.0_14\bin" (znači jre umesto jdk). Proveri u svakom slučaju. Nisam primeto tvoju prošlu poruku pa ti nisam odgovorio.

";" a odmah zatim i "C:\Program Files\Java\jdk1.6.0_14\bin" si trebao da dodaš na kraj vrednosti "Path" promenljive.

Ovo što ti "java" komanda ne radi je malo čudno. Meni instalacija JDK-a, "java.exe" i još neke alate smestila i u "system32" direktorijum, pored uobičajenog mesta "C:\Program Files\Java\jre1.6.0_14\bin", pa mi je "java" automatski bila u PATH-u. Za "javac" sam morao da menjam PATH.

Pronjuškaj po svom sistemu, vidi gde ti je šta instalirano a adekvatno izmeni PATH.

mcdhappy80
26.8.2009, 18:20
Preciziraj onaj deo "...a JAVA nece...".
Npr., kako izgleda komanda (java ???) koju nakucaš u Prompt-u i šta ti posle njenog izvršavanja piše kao objašnjenje za grešku?

"java" komanda/program se ne nalazi u "C:\Program Files\Java\jdk1.6.0_14\bin" već u "C:\Program Files\Java\jre1.6.0_14\bin" (znači jre umesto jdk). Proveri u svakom slučaju. Nisam primeto tvoju prošlu poruku pa ti nisam odgovorio.

";" a odmah zatim i "C:\Program Files\Java\jdk1.6.0_14\bin" si trebao da dodaš na kraj vrednosti "Path" promenljive.

Ovo što ti "java" komanda ne radi je malo čudno. Meni instalacija JDK-a, "java.exe" i još neke alate smestila i u "system32" direktorijum, pored uobičajenog mesta "C:\Program Files\Java\jre1.6.0_14\bin", pa mi je "java" automatski bila u PATH-u. Za "javac" sam morao da menjam PATH.

Pronjuškaj po svom sistemu, vidi gde ti je šta instalirano a adekvatno izmeni PATH.

Evo koda Java klase Zdravo:
public class Zdravo {
public static void main (String args[]){
System.out.println("Zdravo svete!");
}

}Fajl je snimljen kao Zdravo.java
U Environmental Variables Path-u samo dodao C:\Program Files\Java\jdk1.6.0_14\bin, zasto, zato sto se na mom sistemu nakon instalacije JDK-a obe komande JAVAC i JAVA nalaze u tom direktorijumu:

http://i598.photobucket.com/albums/tt65/AndyGordon80/javapathsl.jpg

Primetio sam da se komanda JAVA nalazi u jos nekoliko direktorijuma unutar glavnog Java folder-a (poddirektorijumi JDK i JRE direktorijuma) kao sto su:
C:\Program Files\Java\jdk1.6.0_14\jre\bin i
C:\Program Files\Java\jre6\bin

ali, napominjem da se u ovim direktorijumima nalazi samo JAVA komanda a ne i JAVAC, pa mi je zbog toga bilo logicno da u path stavim onu putanju gde se nalaze obe komande a to je u mom slucaju ova koju vidite na slici.

E sad, ono sto ja uradim nakon sto sam dodao path i napravio Zdravo.java fajl je sledece:
1) Iskopiram Zdravo.java na E: particiju;
2) otvorim Command prompt iz start menija i prebacim se na E: ;
3) kucam javac Zdravo.java -> prevodjenje u bajtkod se izvrsi bez greske i dobijem Zdravo.class fajl;
4) kucam java Zdravo i onda mi se pojavi sledeca greska:

http://i598.photobucket.com/albums/tt65/AndyGordon80/CPError.jpg

Napomenucu jos i ovo, kada Zdravo.java fajl kopiram u folder C:\Program Files\Java\jdk1.6.0_14\bin i onda preko command prompt-a odem u taj folder i odatle kompajliram i izvrsim program on se izvrsi normalno i ne pokazuje nikakvu gresku kao sto se i vidi na sledecoj slici:

http://i598.photobucket.com/albums/tt65/AndyGordon80/CPError2.jpg

Jel ima neko neku ideju sta je ovde problem?

Hvala.

bvitnik
26.8.2009, 22:19
E to je moguće da je zbog CLASSPATH-a. CLASSPATH je kod mene podešen na ".", odnosno samo tekući direktorijum.

mcdhappy80
26.8.2009, 23:00
E to je moguće da je zbog CLASSPATH-a. CLASSPATH je kod mene podešen na ".", odnosno samo tekući direktorijum.

Podesio sam CLASSPATH kao i ti i sada kompajlira i izrsava program iz tekuceg direktorijuma.

Hvala