Как я могу запустить локальный файл jar из java-программы?Выполнить файл .jar из Java-программы
Файл jar не находится в пути класса Java-программы-вызывающего.
Как я могу запустить локальный файл jar из java-программы?Выполнить файл .jar из Java-программы
Файл jar не находится в пути класса Java-программы-вызывающего.
Предлагаю вам использовать ProcessBuilder
и запустить новый JVM.
Вот что-то, чтобы вы начали:
ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
Во-первых, описание вашей проблемы немного неясно. Я не понимаю, хотите ли вы загружать классы из файла jar для использования в вашем приложении, или в банке содержится основной файл, который вы хотите запустить. Я предполагаю, что это второй.
Если это так, у вас здесь много вариантов. Самый простой из них будет следующее:
String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);
Вуаля ... Если вам не нужно запустить файл банку, а загружать классы из него, дайте мне знать.
Пожалуйста, перетащите себя (пинать и кричать - если нужно) в способности Java 1.5 & ProcessBuilder. –
Спасибо, что это работает. Большое спасибо. – Abdul
Это решение будет делать то же самое, что и «ProcessBuilder» (за исключением случаев, когда вы хотите закрыть и т. Д.), И вам нужно ввести меньше. В моем случае мне понадобится пусковая установка, которая закрывается после открытия банки, так что этого достаточно для меня. – Hydro
Может ли быть полезным следующее:
http://download.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
Другой способ сделать на окнах:
Runtime.getRuntime().exec("cmd /c start jarFile");
таким образом, вы можете установить приоритет вашего процесса, а также (нормальный/низкий/и т.д.)
1) Установить путь класса из переменных окружения
2) Перейти к папке, в которой существует ваш файл jar
3) Выполните следующие команды через командную строку
Java -jar jarfilename
Вопрос в том, как запустить файл jar из программы, а не как это сделать из командной строки. – Henrik
Process proc = Runtime.getRuntime().exec("java -jar Validate.jar");
proc.waitFor();
// Then retreive the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
byte b[]=new byte[in.available()];
in.read(b,0,b.length);
System.out.println(new String(b));
byte c[]=new byte[err.available()];
err.read(c,0,c.length);
System.out.println(new String(c));
Используйте System.err.println (новая строка (c)); для печати сообщений об ошибках. –
Вы можете запустить файл банку, из которого когда-либо вы хотите, используя только одну строку кода.
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
где
new File("your path to jar")
Надеется, что это помогает.
Спасибо.
Работает ли это за пределами оконной машины? – katzenhut
Invoke статический метод основной с аргументами
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);
@aioobe Могу ли я интегрировать System.out в исходной программе?извините вопрос, но я новичок в java – vfgjrk
Не уверен, что я понимаю ваш комментарий, но вы получаете 'Process' обратно из' start() ', который предоставляет вам' getInputStream'/'getOutputStream'. – aioobe
ОК, это работает! Большое спасибо – vfgjrk