PDA

View Full Version : [java] Primo programma...errore in esecuzione?


D4rkAng3l
10-11-2008, 12:03
Ciao,
ho iniziato a fare i primi passi con Java per un esame universitario...è un semplice programma che non fà ne input ne output formato da 2 classi: una che definisce il tipo di dati dei numeri interi, positivi e pari,più un metodo di istanza ed uno di classe e l'altra che contiene il main che istanzia 3 oggetti interipositivi pari e che usa i due metodi.

Dopo aver compilato le due classi provo ad eseguire da DOS la classe che contiene il main con il comando:
java TestInteroPositivoPari.class
mi dà il seguente messaggio di errore:

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)

I codici delle due classi sono:

Classe TestInteroPositivoPari.java:

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);
}
}


Classe InteroPositivoPari.java

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 = 1;
return esito;
}
}


Da che può dipendere?Come risolvo?

Grazie
Andrea

wingman87
10-11-2008, 13:26
Quando lanci il programma non devi scrivere ".class".
Quindi devi scrivere: "java TestInteroPositivoPari"

agente mm8
10-11-2008, 13:39
Ora sei ancora all'inizio e vabé, ma più in là ti consiglio vivamente un IDE, come ad esempio NetBeans o Eclipse.

D4rkAng3l
10-11-2008, 16:36
Ok...funziona...ma come mai devo lanciare InteroPositivoPari e non InteroPositivoPari.class ? non devo lanciare in esecuzione la classe che contiene il metodo main quindi il file che la contiene compilata?

Per l'IDE...la proff ci ha fatto scaricare un piccolo editor...ha detto che se ci scopre ad usare netbeans o altro per questo primo esame ci strozza (non sò perchè) e che li useremo nei corsi successivi...boooo :D

banryu79
10-11-2008, 17:19
Per l'IDE...la proff ci ha fatto scaricare un piccolo editor...ha detto che se ci scopre ad usare netbeans o altro per questo primo esame ci strozza (non sò perchè) e che li useremo nei corsi successivi...boooo :D
Probabilmente perchè vuole che vi facciate la compilazione e il lancio dei programmi a manina, pastrocchiando con i path dei vari file per capire bene come funzionano queste meccaniche di base.
Inoltre cominciare a smanettare con IDE della complessità di NetBeans et similia per il livello a cui siete probabilmente potrebbe essere una perdita di tempo.