使用Java命令行调用并获取结果的过程可以分为以下几个步骤:

  1. 创建一个新的Java类,作为命令行调用的入口。
  2. 在该类的main方法中,使用ProcessBuilder类创建一个新的进程,并指定要执行的命令和参数。
  3. 启动进程并等待其执行完成。
  4. 获取进程的输出结果。

下面是每一步需要做的具体操作以及对应的代码:

1. 创建一个新的Java类

首先,创建一个新的Java类,例如CommandLineCaller

2. 使用ProcessBuilder创建新的进程

CommandLineCaller类的main方法中,使用ProcessBuilder类创建一个新的进程。ProcessBuilder提供了一种方便的方式来创建和控制子进程。

ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", "your-jar-file.jar");

上述代码中,我们通过ProcessBuilder创建了一个运行java -jar your-jar-file.jar命令的进程。你需要将your-jar-file.jar替换为你实际要执行的Java可执行文件的路径。

3. 启动进程并等待执行完成

启动进程并等待其执行完成,可以通过调用startwaitFor方法来实现。

Process process = processBuilder.start();
int exitCode = process.waitFor();

上述代码中,start方法启动了进程,waitFor方法会阻塞当前线程,直到进程执行完成并返回退出码。你可以根据exitCode来判断进程的执行结果。

4. 获取进程的输出结果

要获取进程的输出结果,可以通过获取进程的输入流,并读取其内容。

InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder output = new StringBuilder();
while ((line = reader.readLine()) != null) {
    output.append(line).append(System.lineSeparator());
}

String result = output.toString();

上述代码中,我们通过process.getInputStream()获取进程的输入流,然后使用BufferedReader逐行读取输入流的内容,并将每一行的内容添加到output中。最后,将output转换为字符串即可获得进程的输出结果。

下面是完整的代码示例:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class CommandLineCaller {
    public static void main(String[] args) {
        try {
            ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", "your-jar-file.jar");
            Process process = processBuilder.start();
            int exitCode = process.waitFor();

            if (exitCode == 0) {
                InputStream inputStream = process.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                StringBuilder output = new StringBuilder();
                while ((line = reader.readLine()) != null) {
                    output.append(line).append(System.lineSeparator());
                }

                String result = output.toString();
                System.out.println("输出结果:" + result);
            } else {
                System.out.println("命令执行失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上就是使用Java命令行调用并获取结果的完整流程和代码。通过以上步骤,你可以在Java程序中调用命令行,并获取其执行结果。记得替换代码中的your-jar-file.jar为实际的Java可执行文件路径。祝你成功!