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

    Problema nell'esecuzione!!

    Salve gente.. come da titolo... ho problemi nell'esecuzione... il codice viene compilato senza problemi.. ma quando vado ad eseguire mi da errore..
    il classpath credo di averlo impostato giusto.. ho seguito il libro!!
    comunque.. il codice è:


    import prog.io.ConsoleOutputManager;

    class Programma {
    public static void main (String[] args) {
    ConsoleOutputManager video = new ConsoleOutputManager();
    video.println("Ecco il mio primo programma!");
    }
    }

    e come errore mi da:

    >javac Programma.java
    >Exit code: 0
    >java -cp . Programma
    Exception in thread "main" java.lang.NoClassDefFoundError: prog/io/ConsoleOutputManager
    at Programma.main(Programma.java:5)
    Caused by: java.lang.ClassNotFoundException: prog.io.ConsoleOutputManager
    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)
    ... 1 more
    >Exit code: 1



    aiutatemi a capire!!
    grazie in anticipo

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

    Re: Problema nell'esecuzione!!

    Originariamente inviato da markus182
    Exception in thread "main" java.lang.NoClassDefFoundError: prog/io/ConsoleOutputManager
    La classe ConsoleOutputManager nel package prog.io chiaramente deve essere trovata.

    Per come hai impostato il classpath (con -cp . ) ci dovrebbe essere nella directory "corrente" (appunto '.') una cartella "prog" che contiene una cartella "io" che contiene un ConsoleOutputManager.class
    Hai tutto questo? Dal NoClassDefFoundError si deduce di no.

    Quindi o strutturi le cose come ho appena detto sopra oppure, in alternativa, la classe ConsoleOutputManager.class può anche stare da qualunque altra parte, purché stia comunque sotto un percorso prog/io (questo è tassativo, i nomi di package si devono "riflettere" nei nomi delle directory) e che la directory che contiene la "prog" (qualunque cosa sia) sia in "classpath".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    allora... il classpath nella variabile di sistema l'ho impostato così ''.;C:\myjavalib;''
    e le cartelle sono sistemate in questo modo:
    codice:
                                                          C
                                                          |
                                                      myjavalib
                                                          |
                                                         prog
                            ______________________________|_____________________________
                            |                             |                             |
                          docs                            io                         utili
                            |                             |                             | 
                       .........            ConsoleOutputManager.class              .........
    è impostato così.. infatti mi sembra strano che non funzioni..

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markus182
    allora... il classpath nella variabile di sistema l'ho impostato così ''.;C:\myjavalib;''
    e le cartelle sono sistemate in questo modo:
    codice:
                                                          C
                                                          |
                                                      myjavalib
                                                          |
                                                         prog
                            ______________________________|_____________________________
                            |                             |                             |
                          docs                            io                         utili
                            |                             |                             | 
                       .........            ConsoleOutputManager.class              .........
    è impostato così.. infatti mi sembra strano che non funzioni..
    Se usi -cp questo "sovrascrive" la variabile di ambiente CLASSPATH.
    Quindi visto che in CLASSPATH c'è anche il punto '.' la cosa più semplice è quella di non usare affatto -cp.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    io uso Scite.. quindi fa automaticamente.. come potrei risolvere?!

    EDIT:
    ah... tu dici di togliere il classpath dalla variabile di sistema?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markus182
    io uso Scite.. quindi fa automaticamente.. come potrei risolvere?!
    Fa "automaticamente" ... cosa?

    Mi pare semplice: il default è '.'. Se c'è CLASSPATH viene ignorato il default. Se c'è -cp/-classpath viene ignorato il CLASSPATH/default.

    Quindi scegli tu in che modo far sì che alla fine il classpath contenga la/e directory che fanno da "base" per le classi (con o senza package, se hanno package si riflettono nelle cartelle che vengono aggiunte alla base per trovare la classe).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    quindi.. in definitiva.. cosa dovrei fare? cosa dovrei cambiare affinchè il codice venga eseguito?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markus182
    quindi.. in definitiva.. cosa dovrei fare? cosa dovrei cambiare affinchè il codice venga eseguito?
    Visto che in CLASSPATH c'è ''.;C:\myjavalib;'' (quindi corretto: il . indica la directory corrente, per la tua classe e C:\myjavalib è la "base" per la prog) semplicemente non usare -cp/-classpath.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    grazie per avermi illuminato!!!
    ora funziona ma.. c'è sempre un problema (di esigenza).. con Scite dopo aver compilato
    vado su Tools>Go... ma.. quando clicco su Go il programma scrive automaticamente nella parte destra ">java -cp . Programma" e poi di sotto l'errore... tocca poi a me cancellare la parte ''-cp .'' e poi funziona.. quindi.. vorrei sapere se c'è un metodo che, cliccando su 'Go'.. Scite scrivi direttamente ''>java Programma''!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da markus182
    il programma scrive automaticamente nella parte destra ">java -cp . Programma" e poi di sotto l'errore... tocca poi a me cancellare la parte ''-cp .'' e poi funziona.. quindi.. vorrei sapere se c'è un metodo che, cliccando su 'Go'.. Scite scrivi direttamente ''>java Programma''!
    Se esiste una opzione di configurazione di Scite che permette di impostare il classpath da usare ... non lo so (perché non conosco l'editor). Ti basta sicuramente poco per fare un giro nelle opzioni di configurazione. Se non c'è una tale opzione ... non so che dire.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.