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

时间:2012-01-27 11:02:17

标签: java

有没有办法在Java应用程序中使用Runtime.exec启动java类(并将其传递给类路径和libary路径)?

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

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

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

谢谢

1 个答案:

答案 0 :(得分:4)

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?