Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Runtime.exec()到bash javac错误_Java_Bash - Fatal编程技术网

Runtime.exec()到bash javac错误

Runtime.exec()到bash javac错误,java,bash,Java,Bash,我使用Runtime.exec()在Java程序中运行shell脚本。 该脚本基本上编译并运行java程序,大致如下所示: ./run2.sh "/Users/user/Desktop/Test.java" "Test" "/Users/user/Desktop/" 我的参数通常是java文件的绝对路径、类名和假定编译的类文件所在的目录 我的剧本很简单 javac "$1" cd "$3" java "$2" 我已经试着在终端中运行生成的命令,效果很好。但是,当java程序运行它时,我得到一

我使用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"
我该怎么办?我已经尝试了在互联网上找到的所有可能的脚本(*编辑:当然,我能想到)

(*编辑:执行语句)


第一行,
String[]outFile=translate.translate()
返回假定参数的数组字符串

您的错误是在传递给
exec()
的命令字符串中包含引号字符。
exec()
方法不知道如何处理引号或其他“shell语言”内容。您最好尝试执行以下命令:

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

命令和参数字符串周围没有引号。

如何运行它?你能粘贴准确的Runtime.exec()语句吗?你能显示System.out.println(命令)的完整输出吗;固定的但是此代码的输出类似于
/run2.sh“”,
,这是错误的,它必须是这样的还是我可以执行
Runtime.getRuntime().exec(命令,outFile)?其中outFile是字符串参数的数组,我应该传递,这是一个愚蠢的问题。我查阅了javadocs,发现这是无效的
Runtime.getRuntime().exec(new String[]{command, arg1, arg2, arg3});