Я пытаюсь выполнить еще одну java-банку, используя ClassLoader
, как только эта банка выполнена. Он ищет определенный файл в его каталоге.Выполнить Java-jar из его каталога с помощью java-программы
Как настроить рабочий каталог при запуске этой банки?
Я использовал System.setProperty("user.dir", "C:\\abc");
перед запуском банки, но он не работает.
Я пытаюсь запустить банку в другом потоке и перед запуском 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? – jfcorugedo
Если вы запустите какой-то код из jar, загруженного через загрузчик классов, то свойства системы совпадают. Возможно, покажите нам, как вы «исполняете еще одну банку java». –