如何在另一个Java程序中运行Java程序。

16 浏览
0 Comments

如何在另一个Java程序中运行Java程序。

我想知道如何在另一个Java应用程序(jar2)中运行另一个Java控制台应用程序(jar1),并且我希望能够查看jar1的输出并从jar2中插入自己的输入。\n让我解释得更详细一些。有一个名为Spigot的程序(在www.spigotmc.org中了解更多):Spigot是一个用于运行Minecraft服务器的CLI Java程序,你必须在Windows服务器的批处理文件中使用启动标志来运行它,例如:\njava -Xmx 1024m -Xms 1024Xms spigot.jar1。现在我想制作一个程序,让我能够在自己的图形设计中运行它,而不是在控制台中运行。\n如何向现有的命令窗口传递参数?

0
0 Comments

问题的原因是在一个Java程序中运行另一个Java程序。解决方法是使用ProcessBuilder类来运行新的程序,并在运行新程序之前终止已经运行的程序。下面是一个关于如何使用ProcessBuilder的例子:

import java.io.IOException;
public class RunJavaProgram {
    public static void main(String[] args) {
        // 创建一个ProcessBuilder对象来运行新的Java程序
        ProcessBuilder processBuilder = new ProcessBuilder("java", "AnotherJavaProgram");
        try {
            // 终止已经运行的程序
            processBuilder.command("pkill", "java").start().waitFor();
            
            // 运行新的Java程序
            Process process = processBuilder.start();
            process.waitFor();
            
            // 在运行新程序后可以传递命令/参数
            processBuilder.command("java", "AnotherJavaProgram", "arg1", "arg2").start().waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

请注意,在运行新程序之前,我们使用`pkill`命令终止了所有正在运行的Java程序。这样做是因为无法修改已经运行的程序的参数。然后,我们使用ProcessBuilder来运行新的Java程序。你可以通过在`command`方法中传递其他命令和参数来在运行新程序后执行更多操作。

希望这个例子能帮助你解决在一个Java程序中运行另一个Java程序的问题。

0