gpt4 book ai didi

java - 从另一个 Java 应用程序启动 Java 类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:37 24 4
gpt4 key购买 nike

有没有办法在不使用 Runtime.exec 的情况下从 Java 应用程序中启动 java 类(并向其传递类路径和库路径)?

我看过: Launch a java application from another java application

但需要能够传递 CLASSPATH 和库路径。

我正在尝试制作一个用户下载的启动器,它会下载所需的文件然后启动它们。

谢谢

最佳答案

https://stackoverflow.com/a/5575619/20394应该解释如何添加到库路径并仍然使用相同的 JVM。

要添加到类路径,请创建您自己的 URLClassLoader并将其用于find您要加载的类,然后反射性地调用它的 start 方法。

URLClassLoader classLoader = new URLClassLoader(
urlsToDirectoriesAndJars, getClass().getClassLoader());
Class<?> myMainClass = classLoader.findClass("pkg.path.for.MainClass");
Method main = myMainClass.getMethod("main", String[].class);
main.invoke(null, new Object[] { new String[] { "args", "for", "main" } });

您需要处理反射 API 抛出的一些异常,但这就是它的要点。

如果该类调用 System.exit,则参见 How to prevent calls to System.exit() from terminating the JVM?

关于java - 从另一个 Java 应用程序启动 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9032338/

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