繁体   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