Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143

    [JAVA]Errore col file .bat

    Salve, devo crearmi un file .bat per redirigere l'output su file. Ho dei problemi a scrivere questo file, perché, da come ho capito, non va bene qualcosa del path dei file jar che sono usati nella classe da lanciare. Mi spiego meglio:
    Ho un Main, per eseguirlo ho messo questa riga sul file .bat:

    <CODE>
    @ C:\..\bin\java -cp .;x.y.Main > output.txt
    </CODE>

    Come si può vedere, tale classe appartiene al package x.y

    Lanciando dalla finestrina DOS però, se non metto nulla per i jar usati con le istruzioni import, mi crea uu file con un output difficile da capire ma che essenzialmente parla di qualcosa sui jar, allora ho pensato di dover aggiungere qualcosa nel bat; ho messo 2 righe, una per ogni jar usato, ma ho anche provato a farne una solamente, che finiva con *.jar, comunque questo è ciò che ho scritto:

    <CODE>
    @ C:\..\bin\java -cp .;D:\..\..\Project\lib\*.jar
    </CODE>

    Per cui, per riassumere, il mio file .bat ha due righe, la prima è quella appena scritta sopra, l'altra è la prima che ho postato.
    Se lancio il file mi appare un messaggio che parla di NoClassDefFoundException e dice wrong name di una classe che non è mia, è di uno dei 2 package.
    Presumo che ho sbagliato qualcosa nei path.

    Tanto per essere completi, la cartella lib dove sono i jar è allo stesso livello di src (source), dove sta dentro x.y.Main.

    Qualcuno ha qualche idea su cosa sto sbagliando?
    Grazie mille

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

    Re: [JAVA]Errore col file .bat

    Originariamente inviato da namek
    Qualcuno ha qualche idea su cosa sto sbagliando?
    Tralasciamo un momento la questione della redirezione (che funziona, assicuro!).
    Il problema è l'avvio della applicazione. Se la classe da lanciare è dentro un jar e nel jar il file Manifest contiene l'attributo Main-Class che indica la classe da avviare, basta fare:

    java -jar nomejar.jar

    Altrimenti (e in ogni caso per usare librerie in altri jar), devi mettere tutti i riferimenti ai jar in CLASSPATH oppure passarli con il parametro -cp e poi passare anche il nome della classe da avviare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Ciao,
    la mia classe non è in un jar, il file .bat si trova nella stessa cartella di Main.class e cerco di lanciare da lì.
    Da quello che mi hai spiegato credo di dover passare i parametri a -cp quindi.
    Allora ho scritto:

    ........... -cp D:\..\..\lib\*.jar;.....

    Ma non va bene. Mi sai dire qualcosa o un link dove trovare dettagli per arrangiarmi da solo nel caso sia una cosa un pò lunga?
    Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da namek
    la mia classe non è in un jar, il file .bat si trova nella stessa cartella di Main.class e cerco di lanciare da lì.
    Da quello che mi hai spiegato credo di dover passare i parametri a -cp quindi.
    Allora ho scritto:

    ........... -cp D:\..\..\lib\*.jar;.....

    Ma non va bene. Mi sai dire qualcosa o un link dove trovare dettagli per arrangiarmi da solo nel caso sia una cosa un pò lunga?
    Non mi risulta che si possano mettere degli * nella specifica del classpath!! Dovrei leggere bene la documentazione, comunque ho appena fatto una prova e mi risulta che non funziona con il *.
    Devi mettere tutti i jar in modo completo. Quindi:

    java -cp path_jar1;path_jar2;... Main
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Sono sempre qui
    Dunque ho provato a non redirigere, visto che poi hai detto che è ok.
    QUesto è ciò che metto:

    @ C:\..\bin\java -cp D:\..\..\lib\a.jar;D:\..\..\lib\b.jar;x.y.Main

    Nel file .classpathdel progetto mette che c'è una entry di tipo lib, quindi pare che ciò che ho scritto sia in un certo senso corretto.
    Sulla console stampa la sintassi del comando, per capire options ecc...
    Mi pare che si sia affrontato ogni aspetto della riga che ho scritto....
    Cosa potrà essere ora?


  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da namek
    Cosa potrà essere ora?
    codice:
    @ C:\..\bin\java -cp D:\..\..\lib\a.jar;D:\..\..\lib\b.jar     x.y.Main
    La classe da avviare non va nel classpath
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Eh si.......
    Perfetto, grazie mille 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.