Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Impossibile compilare perchè non mi riconosce una classe esterna nello stesso package

    Salve. Come da titolo. Ho un package, con all'interno 2 .java. Uno riesco a compilarlo e quindi a creare il class, mentre con l'altro non riesco perchè non mi riconosce l'oggetto della classe dell'altro file che si trova sempre nello stesso package... come proseguo?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Impossibile compilare perchè non mi riconosce una classe esterna nello stesso pac

    Originariamente inviato da Dreamer89
    Come da titolo. Ho un package, con all'interno 2 .java. Uno riesco a compilarlo e quindi a creare il class, mentre con l'altro non riesco perchè non mi riconosce l'oggetto della classe dell'altro file che si trova sempre nello stesso package... come proseguo?
    Le classi sono in un package, quindi hai creato la/e directory che "riflettono" la struttura dei package?? E la directory che a sua volta contiene il package "radice" è in classpath??

    Ok, probabilmente non ti è chiaro. Esempio:

    file Paperino.java:

    package com.pippo;
    public class Paperino { Pluto p; }


    file Pluto.java:

    package com.pippo;
    public class Pluto { }

    I file .class generati devono stare in un path com/pippo, questo è tassativo.

    Quindi potresti avere un path del tipo:

    C:\Java\Esempi\com\pippo

    che contiene i 2 sorgenti.

    In "classpath" ci deve essere in un modo o nell'altro (con una specifica assoluta o relativa) un riferimento alla directory C:\Java\Esempi che è quella che contiene il package "radice".

    Quindi ci si posiziona in C:\Java\Esempi

    e si dà per esempio:

    javac -classpath . com\pippo\Paperino.java

    E se Paperino avesse un main(), per avviarlo si potrebbe fare:

    java -classpath . com.pippo.Paperino

    se si è in C:\Java\Esempi oppure con riferimento assoluto:

    java -classpath C:\Java\Esempi com.pippo.Paperino


    Nota: non so cosa stai facendo, come e con con stai compilando (se a "mano" come nell'esempio sopra ... con un IDE) o altro. Ma non importa il concetto corretto e valido è quello che ho appena descritto. Le regole sono quelle e da lì non si scappa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho provato a fare come mi hai suggerito, ma appena premo invio dalla shell per eseguire il comando di compilazione, viene lanciato un NoClassDefFoundError o_O

    Però sono comunque riuscito a risolvere facendo così:

    codice:
    import beans.GuestDataBean;
    
    public class compilator
    {
    	public static void main (String[] args)
    	{
    		try
    		{
    			new GuestDataBean();
    		}
    		catch (Exception exception) {}
    	}
    }
    Usando questa classe esterna dal package, riesce a compilarmi il codice (GuestDataBean) che prima non riuscivo... però ovviamente mi sembra un metodo poco "pulito".

  4. #4
    Chiedo scusa, piccolo errore di distrazione... il tuo metodo funziona bene andbin, avevo usato java al posto di javac. Grazie mille Ma cosa sta a significare quel puntino tra -classpath e l'indirizzo del file?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Ma cosa sta a significare quel puntino tra -classpath e l'indirizzo del file?
    La directory "corrente". In classpath puoi mettere tutti i path che vuoi (sia per directory sia per file .jar), se sono assoluti è un conto, se sono relativi sono comunque relativi alla directory corrente.

    Quindi se con la shell ti trovi in C:\Java\Esempi e in classpath hai ".", beh, allora la JVM userà come classpath proprio C:\Java\Esempi
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Perfetto, grazie mille ^^

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.