在我的java代码中调用jar

时间:2013-08-06 03:12:59

标签: java eclipse

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

我试过了 -

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");

但没有运气。请告诉我我做错了什么

3 个答案:

答案 0 :(得分:0)

  

它不起作用

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

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

答案 1 :(得分:0)

这是不正确的:

command.add("java -jar");

应该是

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

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

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

答案 2 :(得分: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);

我尝试过它并且有效!请告诉我们您遇到的任何错误或例外情况。