有没有办法在Java应用程序中使用Runtime.exec
启动java类(并将其传递给类路径和libary路径)?
我见过: Launch a java application from another java application
但需要能够传递CLASSPATH和libary路径。
我正在尝试制作一个用户下载的启动器,它会下载所需的文件,然后启动它们。
谢谢
答案 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?