gpt4 book ai didi

java - 为什么使用 ProcessBuilder 时不显示 Java 控制台?

转载 作者:行者123 更新时间:2023-12-02 00:02:58 24 4
gpt4 key购买 nike

我使用以下命令从另一个 Java 应用程序启动 Java 应用程序。

    ProcessBuilder pb = new ProcessBuilder(javaPath + javaCommand, maxMemStr,
minMemStr, stackSizeStr, jarCommand, jarfile, jarArg);
try {
Process p = pb.start();
} catch (IOException ex) {
Logger.getLogger(launch.class.getName()).log(Level.SEVERE, null, ex);
}

其中 javaCommand 是 java 或 javaw(javaPath 大部分时间为空,除非用户指向备用路径)。问题是,应用程序启动后,即使我验证进程列表包含java,它也不会显示控制台。

是因为PrcoessBuilder没有调用命令shell吗?有没有办法以编程方式显示控制台?

提前致谢。

最佳答案

这是因为“命令控制台”本身是一个附加到另一个进程的 std-in/-out/-err 流并将它们显示在屏幕上的进程。当您单独启动 Java 时,没有其他进程会处理这些流,因此缺少命令控制台。为了获得您想要的结果,您需要启动命令控制台的新实例,然后让它运行您的自定义 java 命令。

可能有更好的方法来做到这一点......但我认为解决方案将取决于平台。在 Windows 中,您可以执行以下操作:

ProcessBuilder pb = new ProcessBuilder("start", "\"JAwesomeSauce\"", "cmd.exe",
"/k", javaPath + javaCommand, maxMemStr, minMemStr, stackSizeStr, jarCommand,
jarfile, jarArg);
try {
Process p = pb.start();
} catch (IOException ex) {
Logger.getLogger(launch.class.getName()).log(Level.SEVERE, null, ex);
}

如果您使用的是 Linux/Mac 操作系统,我假设您可以在 Linux/Mac 中执行类似的操作。

关于java - 为什么使用 ProcessBuilder 时不显示 Java 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com