Newsgroup: it.comp.java
Titolo: Problema uso e compilazione di una classe

Salve a tutti...
Sto implementando una classe per un progettino all'universita,il testo
della classe e questo:
import prog.utili.Data;
 class Rilevazione {
private String numCent;
private String tipoSost;
private double quantitaSost;
private Data dataRil;
Rilevazione(String centralina,String Sostanza,double quantita,Data
data){
this.numCent=centralina;
this.tipoSost=Sostanza;
this.quantitaSost=quantita;
this.dataRil=data;
}
String getCentralina(){
return numCent;
}
String getSostanza(){
return tipoSost;
}
double getQuantita(){
return quantitaSost;
}
Data getData(){
return dataRil;
}
public String toString(){
return
"centralina:"+numCent+";"+"sostanza:"+tipoSost+";"+"quantita:"+quantitaSost+";"+"data:"+dataRil;
}
}
Nn so dove sbaglio ma se la inserisco nel package fornito dal nostro
prof,di cui fa parte anche la class Data  che uso per fare questa
classe,e poi la importo in una qualsiasi applicazione che ne verifichi
il comportamento,la jvm mi da questo errore:
C:\>javac Rilevazione.java
C:\>javac provaclasse.java
provaclasse.java:29: cannot access prog.utili.Rilevazione
bad class file: C:\prog\prog\utili\Rilevazione.class
class file contains wrong class: Rilevazione
Please remove or make sure it appears in the correct subdirectory of
the classpa
th.
Rilevazione ril=new Rilevazione(centralina,sostanza,quantita,data);
^
1 error
Non riesco a capire dove sbaglio,perche la classe che implemento me la
compila correttamente,ma quando la importo dal package
all'applicazione provaclasse mi spara quell'errore li,mentre se lascio
l'applicazione e la classe Rilevazione.class nella stessa directory c:
la jvm quando tento di complilare l'applicazione che mi testi la clsse
mi da questo errore:
C:\>javac provaclasse.java
provaclasse.java:29: cannot resolve symbol
symbol  : class Rilevazione
location: class Prova
Rilevazione ril=new Rilevazione(centralina,sostanza,quantita,data);
^
provaclasse.java:29: cannot resolve symbol
symbol  : class Rilevazione
location: class Prova
Rilevazione ril=new Rilevazione(centralina,sostanza,quantita,data);
                    ^
2 errors
Non so piu che fare,ringrazio anticipatamente per l'aiuto e mi scusa
se e una domanda banale,sono all'inizio della programmazione con
java!!
Khelidan

C:\>javac Rilevazione.java
Questo non centra niente!! :-)

Purtroppo i package non li ho ancora usati, ma scommetto che sei uno
studente di informatica all'universita' statale di Milano :)
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

studente di informatica all'universita' statale di Milano :)
Eh si!! :-))...adesso cio in ballo sto progettino,solo che nn sapevo
piu che fare allora ho optato per postare tutto in blocco sul ng!!

studente di informatica all'universita' statale di Milano :)
 
Ma anche non conoscendo i package,ti(vi) sembra ci sia qualcosa di
palesemente sbagliato nell'implementazione della classe??
Qualche concetto fondamentele che mi sfugge?? :-))
TIA....
Khelidan

Te la butto li': prova a dichiarare public il costruttore (e credo che ti
servano public anche alcuni metodi, per richiamarli)
Facci sapere.


servano public anche alcuni metodi, per richiamarli)
Il problema e che mi da lo stesso tipo di errore anche chiamandoli
public...in piu nel testo del progetto c'e scritto che bisogna
dichiarare la classe private!!...Mah....Cmq grazie!

 il comportamento,la jvm mi da questo errore:
In che senso la inserisci nel package?
Rilevazione per come e' stata definita e' friendly (public
all'interno di un package) pertanto non e' esportabile fuori dal package.
Una classe fuori dal package non puo' istanziarla poche' non la "vede",
infatti provaclasse.java:29: cannot access prog.utili.Rilevazione
Prova a dichiarare la classe Rilevazione come public, non capisco il
senso di dichiararla private... mah, ci sara' qualcosa che mi sfugge.
 
-- 
"difficilmente riusciremo ad arginare la diffusione dei virus finche' 
 esisteranno programmi come  u(z1...zn)=sel1(u z1...zn)=u" - Kleene

senso di dichiararla private... mah, ci sara' qualcosa che mi sfugge.
Il problema e che una condizione per lo sviluppo,imposta dal prof,e
che le classi devono esere dichiarate private,il perche sfugge anche a
me!!
Il fatto e che anche dichiarandola public,quando provaclasse.java
tenta di accedere alla classe,mi da il seguente errore:
C:\>javac provaclasse.java
provaclasse.java:29: cannot access prog.utili.Rilevazione
bad class file: C:\prog\prog\utili\Rilevazione.class
class file contains wrong class: Rilevazione
Please remove or make sure it appears in the correct subdirectory of
the classpa
th.
Rilevazione ril=new Rilevazione(centralina,sostanza,quantita,data);
^
1 error
Grazie per l'aiuto...
Khelidan

 li nel programma!
Se ho capito bene aggiungi la riga:
package prog.utili;
all'inizio del codice, vero?
Gianluca

 1 error
L'errore e sotto il tuo naso!Il file provaclasse.class che ottieni dove si
trova all'interno della struttura del tuo progetto?Pensaci!
Se la classe Rilevazione *deve* restare *package private* allora dei portare
la TUA classe nella stessa posizione di Rilevazione e dicharare che la tua
classe provaclasse.java  fa parte di quel package.
Non leggere il messaggio d'errore *comprendilo*.
--
Magellano

 la jvm quando tento di complilare l'applicazione che mi testi la clsse
La JVM?Al massimo il compilatore.
--
Magellano

Non leggere il messaggio d'errore *comprendilo*.
Cioe devo lasciare private la classe Rilevazione e devo mettere nella
stessa cartella la classe provaclasse e compilarla li?
E come faccio a dichiarare che la classe provaclasse.java fa parte di
quel package?

all'inizio del codice, vero?
E si,dove ho messo anche la classe che ho compilato io e che provo ad
utilizzare mediante provaclasse.java!

 Cioe devo lasciare private la classe Rilevazione e devo mettere nella
Se il prof ti ha imposto cosi, e ovvio che si!
*--------------------1--------------------*
package prog.util;
class Rilevazione
{
...
}
*--------------------1--------------------*
*--------------------2--------------------*
package prog.util;
public class provaclasse
{
    Rilevazione ril = new Rilevazione(...)
}
*--------------------2--------------------*
Tutto nella stessa cartella [...]prog\util\
RTFM
--
Magellano

RTFM
Ti ho scritto una mail in pvt...

 subdirectory of the classpath.
controlla che nella variabile CLASSPATH sia indicato anche il path
c:\prog ed infine assicurati che Rilevazione.class si trovi nella 
directory C:\prog\prog\utili... cosi' dovrebbe funzionare anche se
provaclasse.class si dovesse trovare nella directory piu' sperduta
del tuo HD.
Ricorda pero' che se la classe provaclasse e' esterna al package
dovrai dichiarare la classe Rilevazione friendly altrimenti fai
come ti ha consigliato Magellano.
