从现有Java程序中打开另一个Java应用程序

从现有Java程序中打开另一个Java应用程序,java,swing,Java,Swing,我正在构建一个Java教程,其中单击按钮会打开我构建的记事本应用程序。但是,如何在ActionListener中打开记事本应用程序?我应该使用ProcessBuilder吗?如果单独的程序是编译的.jar文件,请使用以下代码启动它,但请注意,您将无法控制它 Runtime.getRuntime().exec("java -jar 'path/to/file.jar'"); 注意:此方法返回一个进程对象,然后您可以根据自己的需要对其进行修改。如果不简单地实例化ClassInstate,如Note

我正在构建一个Java教程,其中单击按钮会打开我构建的记事本应用程序。但是,如何在
ActionListener
中打开记事本应用程序?我应该使用ProcessBuilder吗?

如果单独的程序是编译的.jar文件,请使用以下代码启动它,但请注意,您将无法控制它

Runtime.getRuntime().exec("java -jar 'path/to/file.jar'");

注意:此方法返回一个
进程
对象,然后您可以根据自己的需要对其进行修改。

如果不简单地实例化ClassInstate,如NotepadApp newApp=new NotepadApp(),您是否希望将其他应用程序放在单独的进程中;在你的listener@SaiYeYanNaingAye“像NotepadApp newApp=newNotePadApp();在您的侦听器中实例化”我同意这是最好的方法。除非确实需要,否则避免启动新流程。这样做,“启动器”应用程序。可以更轻松地与已发布的应用程序进行通信或监控。只需确保
launcherFrame.setDefaultCloseOperation(JFrame.DISPOSE\u ON\u CLOSE)
而不是记事本应用程序上的
EXIT\u ON\u CLOSE
后者不仅会关闭记事本,还会关闭JRE和launcher应用程序。!“我构建的记事本应用程序”-是Jar文件吗?它是否包含在当前应用程序的类路径中?鉴于“无法对其进行任何控制”,这是一个明确的提示,直接在运行的JVM中指示便笺簿是一种方法(请参见上面的注释)。有关正确创建和处理流程的许多好提示,请参见。然后忽略它引用
exec
,并使用
ProcessBuilder
(如OP所述)创建流程。还可以将
字符串arg
分解为
字符串[]args
,以说明包含空格字符的路径之类的情况。