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

    [JAVA] Comandi da console (eccezione nel main)

    Dopo anni di assenza, sto tornando a programmare in Java.

    Ai tempi in cui programmavo facevo uso di Linux e agivo direttamente da linea di comando. Al momento, però, sottomano ho un pc con Windows e mi manca lo spazio sull'hd per affiancargli una distro Linux (recupero appena possibile, promesso )

    Temporaneamente sto usando una IDE (Netbeans).
    Per realizzare un semplice programmino mi servirebbe però la linea di comando. Ho cercato di configurarla: ho modificato le variabili d'ambiente e la variabile "Path" di sistema, però quando entro nel prompt e cerco di eseguire la classe compilata mi dà questo errore:

    Exception in thread "main" java.lang.NoClassDefFoundError

    Ho spulciato in rete e da quello che ho capito l'errore "NoClassDefFoundError" si ha quando la JVM non riesce a eseguire qualche classe in runtime...
    Ma cosa devo fare per risolvere? Qualcuno ha un'idea di dove devo mettere le mani?
    Mi pare tra l'altro un errore molto strano (cioè, è possibile che non carichi le classi principali del java.lang?)

    Aggiungo che il programma non ha errori di sintassi, perché Netbeans me lo compila e lo lancia correttamente.
    Tra l'altro è uno script molto semplice, preso da un articolo di html.it

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Come la esegui? Dove ti trovi? La classe sta in un package?

    (eventualmente prova java -cp . MyClass)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Sì, la classe sta all'interno di un package (è Netbeans a crearmelo automaticamente).
    Da prompt del dos la eseguo portandomi nel percorso esatto della classe e richiamandolo con:

    codice:
    java NomeClasse
    L'IDE la compila e la mette all'interno del percorso "NomeClasse\build\classes"

    Ho provato anche a modificare la variabile di sistema CLASSPATH con questo (avevo visto che conteneva ancora il vecchio percorso di jr6):
    codice:
    .;C:\Programmi\Java\jre7\lib
    ma continua a darmi lo stesso errore.


    Quello che mi chiedo è perché Netbeans lo compili e lo esegua correttamente, mentre il prompt no, visto che entrambi si appoggiano sullo stesso percorso del jdk

    Edit: ho provato anche con il comando che mi hai proposto, niente da fare

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se la classe è dentro ad un package allora il .class deve trovarsi obbligatoriamente dentro ad una directory che ha lo stesso nome del package. E tu, per eseguire quella classe, devi trovarti fuori da quella directory ed eseguire la classe usando il nome completo:

    codice:
    package pippo;
    
    public class Topolino {
       ...
       public static void main(String[] args) {
          ...
       }
    }
    Il file Topolino.class deve essere posizionato dentro una directory che si chiama "pippo"

    (esempio: C:\Progetti\pippo)

    e tu devi essere posizionato fuori da tale directory

    (quindi in C:\Progetti)

    e dare il seguente comando:

    codice:
    java pippo.Topolino
    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
    Ecco una cosa che non sapevo...

    Scrivo qualche dettaglio, nel caso qualcuno legga il thread.
    In pratica Netbeans ha una struttura, a livello di cartelle, di questo tipo (ponendo che la classe si chiami Topolino e il package Pippo):

    codice:
    Cartella_progetti
    --Nome_progetto
    ----build
    ------classes
    --------pippo
    ----------Topolino.class
    Con il prompt del dos bisogna portarsi sul livello della cartella "classes" e da qua eseguire il file della classe.

    Grazie a entrambi per l'aiuto

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.