gpt4 book ai didi

java - Runtime.exec() 到 bash javac 错误

转载 作者:行者123 更新时间:2023-12-01 04:17:11 27 4
gpt4 key购买 nike

我正在使用 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() 方法不知道如何处理引号或其他“shell 语言”内容。您最好尝试执行如下命令:

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

其中命令和参数字符串没有引号。

关于java - Runtime.exec() 到 bash javac 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com