0

我想在我的 java 代码中使用一个 jar 文件 Command.jar。当我像 java -jar Command.jar "Param1" 这样从命令行运行 Command.jar 时,它运行良好。但是,当我尝试使用 Process builder 或 Runtime.getRuntime().exec 在我的 java 代码中运行它时,它不起作用。

我试过这个 -

List <String> command = new ArrayList<String>();
command.add("java -jar");
command.add("Command.jar");
command.add("Param1");

ProcessBuilder builder = new ProcessBuilder(command);
try {
    Process process = builder.start();
} catch (IOException e) {

}

这没用。我也试过这个:

Runtime.getRuntime().exec("java -jar Command.jar Param1");

但没有运气。请告诉我哪里做错了

4

3 回答 3

0

您是否尝试过使用 ProcessBuilder(java.lang.ProcessBuilder)?语法如下 -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "absolute path upto jar");
Process p = pb.start();

您可以将输入/输出/错误重定向到文件/从文件中重新分配,如下所示

File commands = new File("absolute path to inputs file");
File dirOut = new File("absolute path to outputs file");
File dirErr = new File("absolute path to error file");

dirProcess.redirectInput(commands);
dirProcess.redirectOutput(dirOut);
dirProcess.redirectError(dirErr);

我已经尝试过了,它有效!让我们知道您遇到的任何错误或异常。

于 2013-08-06T03:41:31.143 回答
0

这没用

没有告诉我们如何帮助您。您需要向我们提供错误消息或不希望的结果。使用System.out.println's 来帮助您调试和缩小问题范围。

根据我个人经验和其他问题的猜测,您可能在cd "Directory\With\Path\To\Jar"手动运行命令提示符时运行了一些命令。您需要对Runtime.getRuntime().execjar 执行相同操作或将其放在exec程序中默认的位置。

于 2013-08-06T03:20:23.717 回答
0

这是不正确的:

command.add("java -jar");

它应该是

command.add("java");
command.add("-jar");

但也可能存在其他问题。例如,java可能无法通过 PATH 环境变量给出的搜索路径访问。或者Command.jar可能不在当前目录中。

您需要查看java命令将什么(如果有的话)写入其标准输出和/或标准错误流。

于 2013-08-06T03:21:59.987 回答