Java 实现:用 ProcessBuilder 启动 jar 文件并打印日志信息
在 Java 中,可以使用 `ProcessBuilder` 启动另一个 `jar` 文件,并获取其输出流来打印日志信息。以下是一个示例代码: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class RunJarAndPrintLogs { public static void main(String[] args) { try { // 创建 ProcessBuilder 对象,指定要执行的命令,这里是启动另一个 jar 文件 ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", "yourJarFile.jar"); // 启动进程 Process process = processBuilder.start(); // 获取进程的输入流,该输入流包含了另一个 jar 文件的输出信息 InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; // 逐行读取输出信息并打印 while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待进程执行完毕并获取返回值 int exitCode = process.waitFor(); System.out.println("Process exited with code " + exitCode); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 代码解释: 1. 创建 `ProcessBuilder` 对象:使用 `ProcessBuilder` 来构建要执行的命令,这里是启动另一个 `jar` 文件。 2. 启动进程:调用 `start()` 方法启动进程。 3. 获取进程的输入流:通过 `getInputStream()` 方法获取进程的输入流,该输入流包含了另一个 `jar` 文件的输出信息。 4. 读取并打印输出信息:使用 `BufferedReader` 逐行读取输入流中的信息,并打印到控制台。 5. 等待进程执行完毕:调用 `waitFor()` 方法等待进程执行完毕,并获取其返回值。 额外注意的逻辑点: 1. 确保 `yourJarFile.jar` 存在于当前工作目录中,或者使用完整的文件路径。 2. 如果另一个 `jar` 文件有错误输出,可以通过 `getErrorStream()` 方法获取错误流,并进行类似的处理。 3. 在处理输入流时,要注意可能出现的 `IOException` 和 `InterruptedException`,需要进行适当的异常处理。 ######[AI写代码神器 | 542点数解答 | 2025-06-26 15:56:49]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)401
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)381
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)358
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)421
- 解决 Java 中 HTTP 请求方法名含非法字符异常:示例与注意要点(阿里通义 | 321点数解答 | 2024-12-03 17:34:09)370
- 超详细!Java使用ProcessBuilder调用Python脚本实现PPT转图片(讯飞星火 | 295点数解答 | 2024-06-06 17:07:15)333
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)406
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)430
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)542
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)407
- SLF4J与Logback-Classic:日志框架绑定揭秘( | 116点数解答 | 2023-10-07 00:17:42)347
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)322