Как я могу запустить локальный файл 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();
Process
от start()
, который предоставляет вам getInputStream
/ getOutputStream
.
- person aioobe; 08.02.2011
ProcessBulider
: new ProcessBuilder("/path/to/java", "-jar", "your.jar", "arg1", "arg2");
- person aioobe; 08.02.2011
Другой способ сделать на окнах:
Runtime.getRuntime().exec("cmd /c start jarFile");
таким образом вы также можете установить приоритет вашего процесса (нормальный/низкий/и т. д.)
Во-первых, описание вашей проблемы немного непонятно. Я не понимаю, хотите ли вы загружать классы из файла jar для использования в своем приложении, или jar содержит основной файл, который вы хотите запустить. Я предполагаю, что это второе.
Если это так, у вас есть много вариантов здесь. Самый простой из них будет следующим:
String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);
Вуаля... Если вам не нужно запускать файл jar, а загружать из него классы, дайте мне знать.
ProcessBuilder
(за исключением случаев, когда вы хотите закрыть и т. д.), и вам нужно печатать меньше. В моем случае мне понадобится лаунчер, который закрывается после открытия банки, так что мне этого достаточно.
- person Klaider; 13.07.2017
Может ли что-то вроде следующего быть полезным?
http://download.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
Вы можете запустить файл jar из любого места, используя только этот код строки.
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
где
new File("your path to jar")
Надеюсь, поможет.
Спасибо.
Вызвать статический метод main с аргументами
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);
Чтобы запустить исполняемый файл jar из вашего Java-приложения, вы можете скопировать JarClassLoader
из https://docs.oracle.com/javase/tutorial/deployment/jar/examples/JarClassLoader.java
Используйте это так. В этом фрагменте jarUrl
— это URL-адрес для загрузки jar, например, file:/tmp/my- jar.jar и args — это массив строк, которые вы хотите передать в качестве аргументов командной строки в банку.
JarClassLoader loader = new JarClassLoader(jarUrl);
String main = loader.getMainClassName();
loader.invokeClass(main, args);
Имейте в виду, что сейчас вы вставляете чужой двоичный код в свой код. Если он застревает в бесконечном цикле, ваш поток зависает, если он вызывает System.exit(), ваша JVM завершает работу.
1) Установите путь к классу из переменных среды
2) Перейдите в папку, где находится ваш файл jar.
3) Запустите следующие команды через командную строку
java -jar имя_файла_банки