gpt4 book ai didi

java - 从不同 JVM 中的 Java 桌面应用程序中执行 Java main 方法

转载 作者:搜寻专家 更新时间:2023-10-31 20:23:46 25 4
gpt4 key购买 nike

我有一个桌面应用程序,当有人按下一个按钮时,我希望它启动另一个执行类的主要方法的 JVM。我的桌面应用程序已经依赖于包含具有我要执行的主要方法的类的 jar。

目前我有以下代码,但是,我希望它们是一种更优雅的实现方式:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("java -jar another.jar");

我知道我也可以使用 ProcessBuilder。

有没有办法(请原谅伪代码):

Jvm.execute(Main.class);

因为我要调用的 Main 类已经存在于我的类路径中,所以不得不通过运行时运行 java 命令感觉很奇怪。

最佳答案

为什么要在另一个JVM中执行这个Main类?它只会使事情复杂化。

通常只需 Main.main(args) 即可,但是:

如果您想将该程序与您的程序隔离,只需在另一个类加载器下运行它 - 请参阅 URLClassLoader 文档。请注意,即使是复杂的 Java 应用程序服务器也不会创建很多进程(通常它只是一个 JVM 进程),并且仅使用类加载器隔离已部署的 WAR 和 EAR。您可能会将类加载器视为 JVM 的等效进程。

如果另一个程序执行了一些“不安全”操作,请使用 java.security 中的 Java 安全机制并阻止该程序执行这些操作。

如果另一个程序调用 System.exit() 并且这会停止您的程序,那么使用安全机制并禁止该程序调用 System.exit() 就足够了 - 请参阅 System.exit() Javadoc。然后您可以捕获 SecurityException 并忽略它。

关于java - 从不同 JVM 中的 Java 桌面应用程序中执行 Java main 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310605/

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