View Full Version : [Java] Primi passi con java non mi compila
D4rkAng3l
09-11-2008, 20:40
Ciao...ho iniziato oggi a studiare per un esame universitario che fà uso di Java...ho provato a fare il primo esempio portato in classe dalla professoressa ma non mi compila (mi pare di avere installato la jsdk...)
Si trata di due classi: una che definisce il tipo di dato InteroPositivoPari contenente il costruttore, un metodo d'istanza somma ed un metodo di classe per vedere se un numero è coerente con quel tipo di dato.
Ed una seconda classe TestInteroPositivoPari che contiene il metodo main per far girare il tutto.
I codici delle due classi sono i seguenti:
class InteroPositivoPari{
int n; // E' la variabile di istanza
/* Il costruttore */
InteroPositivoPari(int k){
if(k >= 0 && k%2 == 0) n = k;
else n = 1;
}
/* Il metodo di istanza che esegue la somma dell'oggeto ricevente con l'oggetto di tipo InteroPositivoPari referenziato
dal parametro altro */
InteroPositivoPari somma(InteroPositivoPari altro){
int k;
InteroPositivoPari risultato;
if(this.n != 1 && altro.n != 1)
k = this.n + altro.n;
else k = 1;
risultato = new InteroPositivoPari(k);
return risultato;
}
/* Il metodo di classe che verifica se il parametro h è un intero positivo pari o meno, restituisce 1 nel primo caso, 0
altrimenti */
public static int verificaSeInteroPositivoPari(int h){
int esito = 0;
if(h >= 0 && h%2 == 0) esito = 1M
}
}
class TestInteroPositivoPari{
/* Il metodo main è necessariamente un metodo di classe */
public static void main(String[] args){
int k;
InteroPositivoPari N, M, P;
N = new InteroPositivoPari(4);
M = new InteroPositivoPari(6);
P = N.somma(M); // N è l'oggetto ricevente
/* Nell'istruzione che segue la classe InteroPositivoPari è la classe ricevente */
k = InteroPositivoPari.verificaSeInteroPositivoPari(3);
}
}
A questo punto con la shell di msdos vado nella directory dove sono salvati i due file testuali .java che contengono il codice delle due classi e digito nel promp di msdos (questo è il copia e incolla di ciò che c'è nella shell di dos):
C:\Programmi\Crimson Editor\template\esercizi\InteroPositivoPari>javac TestInteroPositivoPari.java
"javac" non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.
Come mai sta cosa? cosa sbaglio? dov'è l'inghippo?
Grazie
Andrea
quel messaggio dovrebbe voler indicare che in qualche modo non trova il jdk..
Don[ITA]
09-11-2008, 20:52
Hai impostato correttamente il path della jdk nelle variabili d'ambiente?
D4rkAng3l
09-11-2008, 21:42
;24943683']Hai impostato correttamente il path della jdk nelle variabili d'ambiente?
cioè? non sò minimamente di cosa stai parlando...cosa dovrei tentare di fare? per favore illuminatemi che devo studiare per sto esame...
D4rkAng3l
09-11-2008, 21:47
;24943683']Hai impostato correttamente il path della jdk nelle variabili d'ambiente?
ok...mi sono documentato un po' su cosa intendevi e credo che dipenda da questo...anche perchè il file javac.exe è presente nella directory: C:\Programmi\Java\jdk1.6.0_03\bin
ora la domanda è: come faccio a cambiare queste variabili e a fare in modo che mi riconosca il comanda javac anche in altre directory?
Grazie
Andrea
Energy++
09-11-2008, 21:53
vai in Risorse del Computer e successivamente su Proprietà, scheda Avanzate e clicca sul pulsante in basso Variabili d'ambiente, dopo di che modifica la variabile di sistema PATH aggiungendo alla fine la stringa: C:\Programmi\Java\jdk1.6.0_03\bin;
D4rkAng3l
09-11-2008, 22:02
vai in Risorse del Computer e successivamente su Proprietà, scheda Avanzate e clicca sul pulsante in basso Variabili d'ambiente, dopo di che modifica la variabile di sistema PATH aggiungendo alla fine la stringa: C:\Programmi\Java\jdk1.6.0_03\bin;
mmm ho provato...io ora dentro al valore della variabile d'ambiente classpath c'ho messo:
.;C:\Programmi\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\Programmi\Java\jdk1.6.0_03\bin;
però continua a non funzionare...
Energy++
09-11-2008, 22:05
devi modificare la variabile PATH non classpath :mbe:
D4rkAng3l
09-11-2008, 22:07
devi modificare la variabile PATH non classpath :mbe:
nada :cry:
Ho provato a cambiare il valore della variabile Path ed ora nel campo valore di tale variabile c'è:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programmi\ATI Technologies\ATI Control Panel;C:\PROGRA~1\SECUREFX;C:\Programmi\File comuni\Adobe\AGL;C:\PROGRA~1\SECURE~1;C:\Programmi\MySQL\MySQL Server 5.0\bin;C:\Programmi\QuickTime\QTSystem\;.;C:\Programmi\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\Programmi\Java\jdk1.6.0_03\bin;
continua a non funzionare...come mai? da che può dipendere? se non risolvo mi impicco
Energy++
09-11-2008, 22:09
nada :cry:
Ho provato a cambiare il valore della variabile Path ed ora nel campo valore di tale variabile c'è:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programmi\ATI Technologies\ATI Control Panel;C:\PROGRA~1\SECUREFX;C:\Programmi\File comuni\Adobe\AGL;C:\PROGRA~1\SECURE~1;C:\Programmi\MySQL\MySQL Server 5.0\bin;C:\Programmi\QuickTime\QTSystem\;.;C:\Programmi\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\Programmi\Java\jdk1.6.0_03\bin;
continua a non funzionare...come mai? da che può dipendere? se non risolvo mi impicco
che cos'è quel punto e punto-e-virgola? :fagiano:
D4rkAng3l
09-11-2008, 22:12
che cos'è quel punto e punto-e-virgola? :fagiano:
e che ne sò io...stava là :cry:
senti mi puoi scrivere esattamente cosa devo copiaincollare nel campo valore di quella variabile d'ambiente? :cry:
Energy++
09-11-2008, 22:13
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programmi\ATI Technologies\ATI Control Panel;C:\PROGRA~1\SECUREFX;C:\Programmi\File comuni\Adobe\AGL;C:\PROGRA~1\SECURE~1;C:\Programmi\MySQL\MySQL Server 5.0\bin;C:\Programmi\QuickTime\QTSystem\;C:\Programmi\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\Programmi\Java\jdk1.6.0_03\bin;
così dovrebbe andare
D4rkAng3l
09-11-2008, 22:18
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programmi\ATI Technologies\ATI Control Panel;C:\PROGRA~1\SECUREFX;C:\Programmi\File comuni\Adobe\AGL;C:\PROGRA~1\SECURE~1;C:\Programmi\MySQL\MySQL Server 5.0\bin;C:\Programmi\QuickTime\QTSystem\;C:\Programmi\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\Programmi\Java\jdk1.6.0_03\bin;
così dovrebbe andare
ok ora funziona...anche se mi ha trovato degli errori nel codice doh :D
altra domandina...cosa contiene la variabile d'ambiente classpath? c'entra qualcosa con java?
Grazie
Andrea
Energy++
09-11-2008, 22:23
no con java non centra, anzi se la rimetti come prima è meglio :fagiano:
che errori ti da il codice?
D4rkAng3l
09-11-2008, 22:24
ok...risolto gli errori nel codice, compilato e prodotto i 2 file .class
Se però provo ad eseguire dalla shell di dos il file TestInteroPositivoPari.class mi si apre una finestrella che mi dice: "Impossibile aprire il file...blabla...selezionare il programma con cui aprirlo"...perchè?!?!!?
devi lanciare la classe contenente il main..
D4rkAng3l
09-11-2008, 22:26
devi lanciare la classe contenente il main..
eh si ho lanciato la classe contenente il main, se vedi nel codice la classe TestInteroPositivoPari.class contiene proprio il metodo main :eek:
Energy++
09-11-2008, 22:30
per eseguire i programmi in java devi sempre utilizzare la java virtual machine quindi per avviare il tuo file devi scrivere nel prompt:
java TestInteroPositivoPari
D4rkAng3l
09-11-2008, 22:34
per eseguire i programmi in java devi sempre utilizzare la java virtual machine quindi per avviare il tuo file devi scrivere nel prompt:
java TestInteroPositivoPari
ok...fatto...pensavo che lo facesse da solo windows quando si lanciava un programma .class visto che la JVM era installata :)
Ora sto programma non fà nulla visto che non dà output ne prende input...quando l'ho lanciato mi dà questo messaggio:
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Programmi\Crimson Editor\template\esercizi\InteroPositivoPari>java TestInteroPositivoPari.class
Exception in thread "main" java.lang.NoClassDefFoundError: TestInteroPositivoPari/class
Caused by: java.lang.ClassNotFoundException: TestInteroPositivoPari.class
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
C:\Programmi\Crimson Editor\template\esercizi\InteroPositivoPari>
C:\Programmi\Crimson Editor\template\esercizi\InteroPositivoPari>
E' normale? che vuol dire?
Tnx
Andrea
Energy++
09-11-2008, 22:37
ma il file che stai eseguendo contiene il metodo main??
public static void main(String [] args) ??
D4rkAng3l
09-11-2008, 22:40
ma il file che stai eseguendo contiene il metodo main??
public static void main(String [] args) ??
si, il codice di tale file è riportato all'inizio del 3d
Energy++
09-11-2008, 22:48
ora non vorrei dire una stronzata, ma forse devi aggiungere un
import InteroPositivoPari;
nella classe TestInteroPositivoPari
però non ne sono sicuro
D4rkAng3l
09-11-2008, 23:00
ora non vorrei dire una stronzata, ma forse devi aggiungere un
import InteroPositivoPari;
nella classe TestInteroPositivoPari
però non ne sono sicuro
dici che lo dovrei aggiungere all'inizio del codice della classe che contiene il metodo main?
Energy++
09-11-2008, 23:07
si esatto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.