【发布时间】:2015-04-21 16:15:40
【问题描述】:
我正在尝试使用ClassLoader 执行另一个java jar,一旦这个jar 被执行。它会在其目录中查找特定文件。
启动这个 jar 时如何设置工作目录?
我在启动 jar 之前使用了System.setProperty("user.dir", "C:\\abc");,但是它不起作用。
我正在尝试在另一个线程中启动 jar 在启动 jar 之前,我正在尝试设置工作目录。
System.setProperty("user.dir", "C:\\abc");
File jarfile = new File("myjar.jar");
Manifest manifest = jar.getManifest();
Attributes attrs = manifest.getMainAttributes();
String mainClassName = attrs.getValue(Attributes.Name.MAIN_CLASS);
URL url = new URL("file", null, jarfile.getCanonicalPath());
ClassLoader cl = new URLClassLoader(new URL[] { url });
Class<?> mainClass = cl.loadClass(mainClassName);
Method mainMethod = mainClass.getMethod("main", new Class[] { String[].class });
mainMethod.setAccessible(true);
int mods = mainMethod.getModifiers();
if (mainMethod.getReturnType() != void.class
|| !Modifier.isStatic(mods) || !Modifier.isPublic(mods)) {
throw new NoSuchMethodException("main");
}
String[] args2 = new String[1];
args2[0] = "service=slave";
mainMethod.invoke(mainClass, new Object[] { args2 });
【问题讨论】:
-
我无法理解你的问题。您是否在您的 java 应用程序中执行一个外部进程来启动另一个 java 应用程序?
-
如果您从通过类加载器加载的 jar 启动一些代码,系统属性是相同的。也许向我们展示你如何“执行另一个 java jar”。
标签: java jar urlclassloader