我正在使用以下方法来调用 jar 文件中的类:
invokeClass("path.to.classfile", new String[] {});
public static void invokeClass(String name, String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, MalformedURLException {
File f = new File(System.getProperty("user.home") + File.separator + ".myapplication"+File.separator+"myjar.jar");
URLClassLoader u = new URLClassLoader(new URL[]{f.toURI().toURL()});
Class c = u.loadClass(name);
Method m = c.getMethod("main", new Class[] { args.getClass() });
m.setAccessible(true);
int mods = m.getModifiers();
if (m.getReturnType() != void.class || !Modifier.isStatic(mods) || !Modifier.isPublic(mods)) {
throw new NoSuchMethodException("main");
}
try {
m.invoke(null, new Object[] { args });
} catch (IllegalAccessException e) {
}
}
是否可以在单独的进程上调用它?那么正在运行的应用程序和新调用的应用程序没有任何共同点吗?
情况:您启动程序 a(客户端更新程序)。从客户端 a 您启动程序 b(客户端)
使用当前代码,项目 a 和项目 b 的所有实例共享相同的堆空间。我正在尝试实现一个状态,即项目 b 的所有实例都是独立的,并且不关心项目 A 是否终止。