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

    [JAVA] Problemi facendo exec di un comando passando per parametro un path con spazi

    Salve a tutti!

    In un programma Java lancio un comando con parametri in questo modo:
    codice:
    Process oProc = Runtime.getRuntime().exec(sCommand);
    In ambiente windows funziona tutto correttamente anche quando ci sono spazi nel path, ma in ambiente linux ho il seguente problema.

    La variabile sCommand contiene semplicemente il nome di un comando, nel mio caso zimpl poi lo spazio e il path di un file sull'hard disk. Se il path non contiene spazi è tutto a posto. Se contiene spazi va in errore. Ho provato anche a racchiudere il path del file tra doppi apici oppure sostituendo il carattere spazio (nel path) con "/ " (slash spazio), ma senza risolvere nulla.

    Ho provato ad usare le seguenti sintassi in sCommand:

    zimpl "/home/armando/Proogetto Armando/file.zpl"

    zimpl /home/armando/Proogetto\ Armando/file.zpl

    Ma ricevendo sempre lo stesso errore.

    Qualcuno mi sa aiutare? Grazie!

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Che errore ti riporta?
    La stessa stringa eseguita da shell funziona? (Quel "Progetto" con due "o" è corretto...?)

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

    Re: [JAVA] Problemi facendo exec di un comando passando per parametro un path con spazi

    Originariamente inviato da VegetaSSJ5
    Ho provato ad usare le seguenti sintassi in sCommand:

    zimpl "/home/armando/Proogetto Armando/file.zpl"

    zimpl /home/armando/Proogetto\ Armando/file.zpl

    Ma ricevendo sempre lo stesso errore.
    Tecnicamente va bene:

    exec("zimpl \"/home/armando/Proogetto Armando/file.zpl\"");

    oppure

    exec(new String[] { "zimpl", "/home/armando/Proogetto Armando/file.zpl" });
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    ringrazio entrambi per le risposte.

    "Proogetto" è stato un errore di trascrizione da parte mia, in realtà è Progetto

    Il problema è che il comando zimpl esce con l'error code 0x1 ma non viene generata un'eccezione a livello di codice java. La cosa certa è che zimpl non va a buon fine perchè dovrebbe generare dei files che invece non vengono generati.

    nel momento in cui esce però mi faccio stampare la stringa sCommand che contiene questo:

    zimpl "/home/armando/Scrivania/Progetto Armando/MCKP_Generator/MCKP.zpl"

    copiando/incollando quella riga sulla shell va a buon fine e vengono generati i files correttamente...


    non so dove sbattere la testa...

    EDIT:
    se rinomino la directory "Progetto Armando" in "Progetto_Armando" e lancio di nuovo il programma, tenendo i doppi apici nel path (come nella stringa sopra riportata) va di nuovo in errore, ma se tolgo i doppi apici funziona correttamente.

  5. #5
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Infatti non ti genera una eccezione: al termine dell'esecuzione devi verificare l'exitcode del processo che hai lanciato. Dai un'occhiata alla documentazione della classe Process

  6. #6
    Originariamente inviato da desa
    Infatti non ti genera una eccezione: al termine dell'esecuzione devi verificare l'exitcode del processo che hai lanciato. Dai un'occhiata alla documentazione della classe Process
    l'exit code infatti è 1, ovvero 0x1.
    il codice per la stampa dell'error code è il seguente
    codice:
    int iExitVal = oProc.waitFor();
    if (iExitVal != 0) {
    	System.out.println("Zimpl has termined with the following error code --> 0x" + Integer.toHexString(iExitVal).toUpperCase());
    	System.out.println(sCommand);
    }
    e in sCommand mi stampa appunto quanto detto nel post precedente

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.