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