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

    Più Classpath da linea di comando

    Salve a tutti, in fase di compilazione il mio probramma mi da i seguenti errori:


    "Model.java : 159 : cannot resolve symbol
    symbol : variable Lib
    location : class mieClassi.Model

    ore[k][g][3]= Double.toString(Lib.calcolaOre(Lib.convertiOre(ore Festivo))); "


    questo ovviamente si ripete ogni volta incontra la parola Lib (che fa riferimento a una classe creata da me), questa classe si trova fisicamente nello stesso package della classe Model, l'ho anche importata con "import mieClassi.*;" perchè se metto "import mieClassi.Lib" mi segnala l'errore.

    Qui ritorniamo al titolo della discussione, dovrei mettere anche il classpath con il percorso della classe?? Il problema è che sto usando un Tomcat con una configurazione strana in cui alcuni jar che mi servono sono salvati in un percorso diverso da quello di default quindi gia ho un "-classpath" quando vado a compilare da linea di comando. Si possono mettere più di un classpath?? Se si, come??

    Grazie dell'aiuto.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    L'errore è proprio l'aver importato il package.

    Tutte le classi di uno stesso package si vedono senza importare nulla. Anzi, importando il package stesso il compilatore (e in futuro la JVM) cercherà una sottodirectory con lo stesso nome della directory del package.

    Non bisogna, quindi, importare le classi dello stesso package... sono già visibili.


    Togli, quindi, l'import della classe Lib dalla classe Model. Se Lib e Model sono nello stesso package non bisogna importare nulla.

    La direttiva import va usata solo ed esclusivamente per importare classi che fanno parte di package diversi da quello della classe.


    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

  3. #3
    Ho fatto come hai detto tu, ho tolto l'import ma il messaggio d'errore è sempre lo stesso... io sto richiamando dei metodi statici inseriti nella classe Lib, però il compilatore me la vede come se fosse una variabile...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da federic01
    Ho fatto come hai detto tu, ho tolto l'import ma il messaggio d'errore è sempre lo stesso... io sto richiamando dei metodi statici inseriti nella classe Lib, però il compilatore me la vede come se fosse una variabile...
    Posta una parte del codice che non funziona e il messaggio preciso del compilatore.

    Verifica anche che la classe Lib sia presente nel package "mieClassi" e che venga correttamente compilata... se la classe Lib contenesse degli errori, non verrebbe compilata e ciascun riferimento a tale classe verrebbe visto come nome di una variabile.


    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

  5. #5
    Nel package "mieClassi" (cartella fisica) ho il file Lib.class quindi è già compilato e nel file ho dichiarato che fa parte di quel package "package mieClassi;".

    Per quanto riguarda gli errori che mi da in compilazione sono circa 40, ma tutti simili a quello messo nel primo post in rosso, cambia solo il numero della riga.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    L'unica altra possibilità che può generare quell'errore è che tu non abbia usato la direttiva "package" nella classe Model.

    Sei sicuro che la classe Model faccia parte del package "mieClassi"? Ovvero, che la prima riga della classe Model.java sia questa:

    codice:
    package mieClassi;
    Se non è così, abbiamo trovato la causa.

    Controlla. E' l'unico altro caso (che mi venga in mente) che produce esattametne quell'errore.


    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

  7. #7
    Si, la classe Model, la classe Lib e tutte le altre classi che si trovano nella cartella "mieClassi" hanno come prima riga:

    codice:
    package mieClassi;
    Quanto odio queste cose inspiegabili...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da federic01
    Si, la classe Model, la classe Lib e tutte le altre classi che si trovano nella cartella "mieClassi" hanno come prima riga:

    codice:
    package mieClassi;
    Quanto odio queste cose inspiegabili...
    Come compili? Da dove?

    Se stai usando un IDE accertati che stia compilando i sorgenti giusti e che non abbia impostazioni strane.

    Se compili da riga di comando, accertati che la variabile CLASSPATH sia correttamente settata (l'impostazione migliore è quella in cui tale variabile non esiste proprio).

    Io ho fatto una prova e l'unico caso in cui dà quel messaggio è quanto ho già riportato, ovvero una delle due classi (in particolare Lib) non ha la direttiva package (o è scritta male).

    Puoi postare il codice di entrambe le classi?
    Sei sicuro di compilare i sorgenti giusti?


    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

  9. #9
    Questo è il codice della classe Model

    codice:
    package mieClassi;
     import java.sql.*;
     public class Model 
    {
    	public String[][][] calcolaLavoro(Connection con, int anno, int mese, String stringaTot, int numeroDip, int giorni) throws SQLException
    	{
    		PreparedStatement p= con.prepareStatement(stringaTot);
    		p.setInt(1,anno);
    		p.setInt(2,mese);
    		ResultSet rs= p.executeQuery();
    		String [][][] ore= new String [numeroDip][giorni][5];
    		if (rs.next())
    		{
    			int k=0;
    			int g=0;
    			double orelav=0;
    			int trasforma=0;
    			String oreOrdinarie= rs.getString("oreOrdinarie");			
    			String oreStraordinarie= rs.getString("oreStraordinarie");				
    			String oreSabato= rs.getString("oreSabato");			
    			String oreFestivo= rs.getString("oreFestivo");			
    			String codiciMacroAttivita= rs.getString("codiciMacroattivita");			
    			String codiciAttivita= rs.getString("codiciAttivita");	
    			int mat=rs.getInt("matricola");
    			int matricola=mat;
    			if (matricola==mat)
    			{
    				orelav=Lib.calcolaLav(oreOrdinarie, codiciMacroAttivita,codiciAttivita);
    				trasforma=(int)(Lib.calcolaOre(orelav));
    				ore[k][g][0]=Integer.toString(trasforma);
    				ore[k][g][1]=Double.toString(Lib.calcolaOre(Lib.calcolaStra(oreStraordinarie)));
    				ore[k][g][2]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreSabato)));
    				ore[k][g][3]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreFestivo)));
    				
    				ore[k][g][4]=Lib.calcolaAss(oreOrdinarie,codiciMacroAttivita,codiciAttivita);
    			}
    			
    			while(rs.next())
    			{
    						
    				g=rs.getShort("giorno");			
    				oreOrdinarie= rs.getString("oreOrdinarie");			
    				oreStraordinarie= rs.getString("oreStraordinarie");				
    				oreSabato= rs.getString("oreSabato");			
    				oreFestivo= rs.getString("oreFestivo");			
    				codiciMacroAttivita= rs.getString("codiciMacroattivita");			
    				codiciAttivita= rs.getString("codiciAttivita");	
    				matricola=rs.getInt("matricola");
    				
    				if (matricola==mat)
    				{
    					orelav=Lib.calcolaLav(oreOrdinarie, codiciMacroAttivita,codiciAttivita);
    					trasforma=(int)(Lib.calcolaOre(orelav));
    					ore[k][g][0]=Integer.toString(trasforma);
    					ore[k][g][1]=Double.toString(Lib.calcolaOre(Lib.calcolaStra(oreStraordinarie)));
    					ore[k][g][2]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreSabato)));
    					ore[k][g][3]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreFestivo)));
    					
    					ore[k][g][4]=Lib.calcolaAss(oreOrdinarie,codiciMacroAttivita,codiciAttivita);
    				}
    				else
    				{
    					mat=matricola;					
    					k=k+1;
    					orelav=Lib.calcolaLav(oreOrdinarie, codiciMacroAttivita,codiciAttivita);
    					trasforma=(int)(Lib.calcolaOre(orelav));
    					ore[k][g][0]=Integer.toString(trasforma);
    					ore[k][g][1]=Double.toString(Lib.calcolaOre(Lib.calcolaStra(oreStraordinarie)));
    					ore[k][g][2]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreSabato)));
    					ore[k][g][3]=Double.toString(Lib.calcolaOre(Lib.convertiOre(oreFestivo)));
    					
    					ore[k][g][4]=Lib.calcolaAss(oreOrdinarie,codiciMacroAttivita,codiciAttivita);
    				}
    			}
    		}
    		return ore;
    	}
    }
    e questo è l'inizio della classe Lib (se vuoi ti posto tutta la classe, però non penso sia quello il problema in quanto già ho il compilato .class)

    codice:
    package mieClassi;
    
    import java.util.Locale;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class Lib
    {
    //metodi della classe
    }

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da federic01
    però non penso sia quello il problema in quanto già ho il compilato .class
    Se l'indicazione del package l'hai aggiunta DOPO aver fatto una prima compilazione, potrebbe essere un problema. Giusto per prova, cancella il file Lib.class e prova a ricompilare tutto.

    Guardando il codice che hai postato, non dovrebbe dare quel tipo di problema. Ho provato a costruire una fittizia classe Lib in questo modo:

    codice:
    package mieClassi;
    
    public class Lib {
       public static double calcolaOre(double numOre) {
          return 8.0;
       }
    
       public static int calcolaStra(String value) {
          return 12;
       }
    
       public static int convertiOre(String value) {
          return 2;
       }
    
       public static double calcolaLav(String str1, String str2, String str3) {
          return 8.0;
       }
    
       public static String calcolaAss(String str1, String str2, String str3) {
          return str1 + str2 + str3;
       }
    }
    (lascia perdere le implementazioni dei metodi, ho fatto in modo che le firme combaciassero con quanto hai usato nella classe Model). Prendendo la tua classe Model e questa classe Lib, compilando non ottengo alcun errore.


    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

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.