簡體   English   中英

Runtime.exec()打擊Javac錯誤

[英]Runtime.exec() to bash javac error

我正在使用Runtime.exec()在Java程序中運行Shell腳本。 該腳本基本上會編譯一個Java程序並運行它,然后執行以下操作:

./run2.sh "/Users/user/Desktop/Test.java" "Test" "/Users/user/Desktop/"

我的參數通常是java文件的絕對路徑,類名和假定編譯的類文件所在的目錄

我的劇本很簡單

javac "$1"
cd "$3"
java "$2"

我嘗試在終端中運行生成的命令,它運行正常。 但是,當Java程序運行它時,我得到並報錯:

javac: invalid flag: "/Users/user/Desktop/Test.java"

我該怎么辦? 我已經嘗試過可以在互聯網上找到的所有可能的腳本(*編輯:我當然可以想到)

(*編輯:執行語句)

// some code here...
String[] outFile = translate.translate();

try {
    String params = "";
    for(String sss: outFile) {
        String tmp = "\"" + sss + "\"";
        params += tmp + " ";
    }

    String command = "./run2.sh "+params;
    System.out.println(command);

    Process proc = Runtime.getRuntime().exec(command);
} //respective catch

第一行, String[] outFile = translate.translate()返回一個數組,該數組是我的參數字符串

您的錯誤是在傳遞給exec()的命令字符串中包含引號字符。 exec()方法不知道如何處理引號或其他“外殼語言”內容。 您最好嘗試執行以下命令:

Runtime.getRuntime().exec(new String[]{command, arg1, arg2, arg3});

命令和參數字符串中沒有引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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