Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Errore package "cannot find symbol"

    Ciao a tutti sono nuova del forum,sto facendo il primo anno di ingegneria informatica all'università e a settembre c'ho l'esame d'informatica e purtroppo non tutti gli esercizi mi riescono,quindi mi sono registrata a questo forum sperando che mi possiate essere d'aiuto
    Attualmente il mio problema riguarda i package in pratica devo creare un package agenzia al cui interno ho svilluppato una classe Mezzo.Il package agenzia l'ho salvato dentro una cartella agenzia.In una cartella eccezioni all'interno di agenzia ho salvato il package agenzia.eccezioni,mentre all'interno della cartella mezzi sempre all'interno di agenzia ho salvato il package.mezzi che invece sviluppa la classe auto.La classe Mezzo importa agenzia.eccezioni,mentre auto importa agenzia e tutti so subpackage.Quando compilo Errore.java non ho problemi,mentre quando compilo Mezzo.java mi da l'errore "package agenzia.eccezioni does not exist" e poi "cannot find symbol,class Errore,location class agenzia.Mezzo".Quando compilo Auto.java invece mi da sempre l'errore "cannot find symbol" sia con la classe Mezzo che con Errore.Come devo fare?! ho per caso sbagliato a posizionare le cartelle?!Vi posto i codici sperando che qualcuno mi possa aiutare,grazie in anticipo

    codice:
    package agenzia;
    import agenzia.eccezioni.Errore;
    
    public class Mezzo{
    	private String targa;	
    	public Mezzo(String t)throws Errore{
    		if(!targaOk(t)){
    		    Errore e = new Errore("Formato targa errato");
    		    throw e;
    		}
    		this.targa=t;
    	}	
    	public String getTarga()throws Errore{
    		return this.targa;	
    	}	
    	public boolean targaOk(String s){
    		if(s.length()!=7)
    			return false;
    		for(int i=0; i<7; i++){
    			if(i==0||i==1||i==5||i==6){
    				if(Character.isDigit(s.charAt(i)))
    					return false;
    			}
    			if(i==2||i==3||i==4){
    				if(!Character.isDigit(s.charAt(i)))
    					return false;
    			}		
    	    }
    		return true;
    	}			
    	public boolean equals(Object x){
    		if(this.getClass().equals(((Mezzo)x).getClass()))
    			if(this.getTarga().equals(((Mezzo)x).getTarga()))
    				return true;
    		return false;
    	}	
    	public double costoNoleggio(){
    	    return 0.0;
    	}	
    }
    codice:
    package agenzia.mezzi;
    import agenzia.*;
    
    public class Auto extends Mezzo{
    	private int cc;	
    	public Auto(String t, int cc)throws Errore{
    		super(t);		
    		if(cc>5000||cc<800){
    			Errore e = new Errore("Valore cilindrata errato");
    			throw e;
    		}
            this.cc=cc;		
    	}
    	public int getCilindrata(){
    		return this.cc;
    	}	
    	public double costoNoleggio(){
    		return ((double)this.getCilindrata()/20.0);
    	}		
    	public boolean equals(Object x){
    		if(super.equals(x))
    		        if(this.getCilindrata()==(((Auto)x).getCilindrata()))
    			        return true;
    		return false;
    	}	
    }
    codice:
    package agenzia.eccezioni;
    public class Errore extends Exception{
    	public Errore(String messaggio){
    		super(messaggio);
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    L'errore è molto chiaro: cannot find symbol indica che qualcosa non l'hai specificata per benino.
    Può essere:
    1. errore nel sistemare i package
    2. errore dovuto alla visibilità (magari lo hai definito private o protected e tenti l'accesso da un altro package)
    3. errore dovuto alla mancanza del metodo
    4. errore di classpath. se compili a riga di comando (cioè da shell) e ti metti a compilare dalla cartella agenzia.mezzi, il compilatore cerca agenzia.eccezioni dentro agenzia.mezzi e se non ricordo male poi va nel classpath definito di java, non trovando definizioni ti dà errori.

    A prima vista sembra che rientri in una di queste 4 categorie

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Probabilmente non hai costruito correttamente le directory nel file system.

    Se hai un package "agenzia" devi avere anche una directory chiamata "agenzia".
    Se hai un package "agenzia.mezzi" devi avere una directory "agenzia" con, all'interno, una directory chiamata "mezzi".

    E via dicendo...

    Ovviamente, i file delle classi devono risiedere all'interno della directory appropriata. La classe "Auto" dovrà essere all'interno della directory "mezzi" che dev'essere contenuta a sua volta nella directory "agenzia".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Originariamente inviato da LeleFT
    Probabilmente non hai costruito correttamente le directory nel file system.

    Se hai un package "agenzia" devi avere anche una directory chiamata "agenzia".
    Se hai un package "agenzia.mezzi" devi avere una directory "agenzia" con, all'interno, una directory chiamata "mezzi".

    E via dicendo...

    Ovviamente, i file delle classi devono risiedere all'interno della directory appropriata. La classe "Auto" dovrà essere all'interno della directory "mezzi" che dev'essere contenuta a sua volta nella directory "agenzia".


    Ciao.
    Grazie per la risposta ma purtroppo le cartelle sono sistemate proprio come hai scritto tu e l'errore continua a verificarsi
    L'errore è molto chiaro: cannot find symbol indica che qualcosa non l'hai specificata per benino.
    Può essere:
    1. errore nel sistemare i package
    2. errore dovuto alla visibilità (magari lo hai definito private o protected e tenti l'accesso da un altro package)
    3. errore dovuto alla mancanza del metodo
    4. errore di classpath. se compili a riga di comando (cioè da shell) e ti metti a compilare dalla cartella agenzia.mezzi, il compilatore cerca agenzia.eccezioni dentro agenzia.mezzi e se non ricordo male poi va nel classpath definito di java, non trovando definizioni ti dà errori.

    A prima vista sembra che rientri in una di queste 4 categorie
    Grazie anche a te per la risposta.Sono sicura che non possono essere i primi 3 errori perchè li ho controllati più volte e sono tutti scritti come si deve.
    Potrebbe essere il quarto tipo di errore,come faccio a verificarlo?
    Vi allego gli screen degli errori.



  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Devi compilare dalla cartella test, al di fuori del package.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sembra un problema di classhpath
    Guarda gli errori ad uno ad uno, gli altri vengono in cascata (e corretto il primo se ne vanno parecchi).
    Devi compilare prima le classi che non hanno dipendenze da altre, se quella va a buon fine vanno compilate anche le altre.
    E' buona norma separare i file .class dai file .java (in genere si crea la cartella build che riproduce l'intera struttura di source con all'interno il .class anziché il .java).
    In genere questo lavoro è fatto in automatico dall'IDE, tu non lo stai usando quindi devi impostare queste cose a mano (o al massimo con uno script ant).

    Ti consiglio di dare un'occhiata qui

    http://cupi2.uniandes.edu.co/site/im...classpath.html

    In generale errore ti va bene, ma se non sbaglio non trova Errore.class e non va avanti.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Alex'87
    Devi compilare dalla cartella test, al di fuori del package.
    si ma o elenca i file .java ad uno ad uno e sta attenta alle dipendenze o compila fuori come dici tu il main (e si crea il compilatore le dipendenze)
    Le conviene definire un path dove buttare i .class (separandoli dai .java) oppure imparare un piccolissimo script ant che fa compilazione

  8. #8
    ma se lo faccio mi appare:

    javac: file not found: Mezzo.java
    Usage: javac <options> <source files>
    use -help for a list of possible options


  9. #9
    Originariamente inviato da valia
    sembra un problema di classhpath
    Guarda gli errori ad uno ad uno, gli altri vengono in cascata (e corretto il primo se ne vanno parecchi).
    Devi compilare prima le classi che non hanno dipendenze da altre, se quella va a buon fine vanno compilate anche le altre.
    E' buona norma separare i file .class dai file .java (in genere si crea la cartella build che riproduce l'intera struttura di source con all'interno il .class anziché il .java).
    In genere questo lavoro è fatto in automatico dall'IDE, tu non lo stai usando quindi devi impostare queste cose a mano (o al massimo con uno script ant).

    Ti consiglio di dare un'occhiata qui

    http://cupi2.uniandes.edu.co/site/im...classpath.html

    In generale errore ti va bene, ma se non sbaglio non trova Errore.class e non va avanti.
    Ok grazie ora lo leggo e vi faccio sapere

  10. #10
    Ho letto la guida ed ho impostato il classpath in questo modo:

    set CLASSPATH=C:\test\agenzia

    ma gli errori sono sempre quelli ovunque io compili.Ho forse sbagliato qualcosa?il classpath andava posizionato da qualche altra parte?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.