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

    Lanciare programma java da riga di comando

    Ciao a tutti

    ho un problema nel lanciare un programma Java da riga di comando. Premettendo che non so fare praticamente nulla con la shell di Window ho cercato di seguire le istruzioni che ho trovato in internet.

    Scaricato SDJ di Java ho modificato la variabile path e l ho fatta puntare alla cartella bin dell SDK poi ho creato una variabile CLASSPATH e l ho fatta puntare alla cartella lib di SDK.

    il mio programma usa inoltre una libreria esterna (jfunction.jar).
    Ho creato una cartella con i file .java del mio programma in C:\Documents\prova
    Poi ho copiato la libreria nella cartella src che contiene le varie cartelle dei package che usa il programma.

    In seguito apro la shell con CD mi sposto nella directory C:\Documents\prova\src
    scrivo: javac -classpath ./jfunction.jar; .\principale\Foglio.java

    dove principale è il package contenente il .java Foglio (che è il mio main).

    Funziona e compila. nella cartella principale ora ho tutti i .class

    Ora scrivo:


    java -cp ./jfunction.jar; .\principale\Foglio

    mi aspetterei che il programma andasse in esecuzione invece mi dice:
    Exception in thread main java.lang.ClassNotFoundException


    Dove sbaglio

    grazie per le eventuali risposte

  2. #2
    Aggiungo che, come noto ora la compilazione non converte tutti i .java in class ma solo alcuni!!
    Come mai?

    Il .java con il main comunque viene compilato.

    Il programma era stato originariamente compilato in Eclipse SDK (non so se questo possa centrare qualcosa)

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da MarcoOnnivoro
    Aggiungo che, come noto ora la compilazione non converte tutti i .java in class ma solo alcuni!!
    Come mai?
    O non passi tutti i file al compilatore o il compilatore, cercando di compilare, trova degli errori nei file Java.

    Verifica di non essere nel primo caso (ovvero, verifica di passare al compilatore tutti i file .java). Se sei certo di questo, dovresti vedere i messaggi che il compilatore ti dà: te lo dice lui cosa c'è che non va e dove.


    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
    il programma in eclipse gira senza errori. Quando lo compilo dalla shell con il comando che ho scritto compila e non da errori. L'indirizzo che ho settato nella shell contiene tutte le classi utili...

    però alcune nn le compila...cioè dai .java non crea i .class

    L'unico errore che mi da è quando provo a lanciarlo e mi dce Class nofound

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    però alcune nn le compila...cioè dai .java non crea i .class
    E io ribadisco che questo può succedere in soli due casi (non ne esistono altri):

    1) Il compilatore non sa che deve compilare una determinata classe (perchè non gli è stato detto di farlo)

    2) La compilazione va in errore, nel qual caso vengono mostrati a video i messaggi di errore

    L'unico errore che mi da è quando provo a lanciarlo e mi dce Class nofound
    Se non compila una classe (per uno dei motivi elencati sopra e non ce ne sono altri di possibili), è ovvio che dia ClassNotFoundException: se una classe non viene compilata, non esiste e non può trovarla.

    Se, al contrario, la compilazione va a buon fine, quell'errore viene sollevato nel caso in cui la classe faccia parte di un package, ma viene avviata in modo errato.

    Tra parentesi: l'istruzione che esegui tu per compilare (quella che hai postato nel primo post) dice al compilatore di compilare SOLO il file "Foglio.java". Se vuoi compilare tutti i file contenuti nella directory (package) "principale", il comando deve essere questo:

    javac -classpath ./jfunction.jar; .\principale\*.java

    e questo compila TUTTE e SOLE le classi del package "principale".

    Se devi avviare la classe "Foglio", devi essere posizionato fuori dalla directory "principale" ed eseguire nel seguente modo:

    java -cp ./jfunction.jar principale.Foglio

    (ma queste sono regole di base, descritte nei manuali: quando avvii le classi NON DEVI usare il backslash, ma il punto come separatore di percorso/package)

    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

  6. #6
    Grazie!
    credoche questa fosse l'informazione che mi mancava !

    pensavo che per compilare bastasse inserire il .java con il main, come si fa quando lo si vuole lanciare!

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.