Sto combattendo il bug degli spazi nel metodo exec di Runtime di Java. Ecco cosa è unico in questo problema: il comando che sto tentando di eseguire è una stringa in entrata e può avere o meno spazi e non è necessariamente in alcun formato specifico. Ad ogni modo, ho bisogno di eseguirlo. Se non ci sono spazi, sono bravo; se ci sono spazi, non sono così bravo.Utilizzo del comando exec di Java quando non si sa se ci sono spazi
Come si tiene conto di entrambe le circostanze?
Informazioni sui bonus senza costi aggiuntivi: uno dei grandi problemi sembra essere che sto cercando di chiamare un eseguibile in c: \ programmi file \ blablabla ... ed exec sembra dividere nello spazio dopo 'c :\programma'. Sono sicuro che anche altri parametri si presenterebbero per i parametri.
Ecco un esempio più specifico dei tipi di stringhe che potrei ottenere. Questo dovrebbe chiarire alcune delle confusione:
- c: \ someApp \ someapp.exe
- c: \ someApp \ someapp.exe -someParam = foo
- c: \ programmi \ someapp \ someapp .exe
- c: \ programmi \ someapp \ someapp.exe -someParam = bar
Il primo funziona bene perché non ha spazi. Il secondo è anche a posto perché si divide nello spazio e usa il primo come comando e il secondo come parametro. Il terzo e il quarto esempio si dividono nel primo spazio, usano 'C: \ program' e il comando, 'files ...' e (nel caso della quarta stringa) '-someParam = bar' come parametri.
Sei in grado di eseguire una pre-elaborazione della stringa in entrata? Se è così, puoi usare Runtime.exec (String [] cmdarray) metodo che gestirà gli spazi per te, assumendo che tu sia in grado di spezzare la stringa in arrivo con gli argomenti – Benn
Garbage In, Garbage Out, non puoi analizzare una stringa senza senso. Assicurati che il mittente sfugga agli spazi che voglio mantenere, o mettere le stringhe che corrono insieme tra virgolette, solo così facendo, il tuo problema passa da impossibile a piuttosto difficile –