[英]Unable to execute a command if it contains spaces using java
問題:-如果可執行命令包含任何空格,則System.exec將在第一個空格之后省略字符串內容。
例如:-如果command =“ / opt / GUIInstaller / installers / abc def gh.bin ”,那么Java僅在/ opt / GUIInstaller / installers / abc上執行命令,並導致類似java.io.IOException的錯誤: / opt / GUIInstaller / installers / abc“:錯誤= 2,沒有這樣的文件或目錄
protected void launch(final String command)
{
try
{
if(command.contains("null"))
{
logger.error("Installer is not located in the specified folder: "+command);
System.exit(0);
}
runTime.exec(command);
}
catch (IOException ioException) {
logger.error(ioException.getMessage(), ioException);
}
}
如果我有任何錯誤,請幫助我解決此問題。
環境:-Java7 update9 + RHEL6
如Process#exec()
的javadocs中所述, exec(String)
只是通過StringTokenizer
將給定的命令字符串拆分為令牌。 如果您通過將令牌傳遞給exec()
自行完成該工作,則其中的空格沒有問題:
runTime.exec(new String[] {"/opt/GUIInstaller/installers/abc def gh.bin", "--param1=foo"});
加
if(command.contains(" ")){command.replace(" ","\\ ");}
在runTime.exec(command)之前;
這基本上只是將空格替換為轉義空格。
編輯:或使其更平滑嘗試執行此
runTime.exec(command.replace(" ","\\ "));
而不添加上述行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.