簡體   English   中英

如果命令使用Java包含空格,則無法執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM