Выполнить файл .jar из программы Java - PullRequest
35 голосов
/ 08 февраля 2011

Как я могу запустить локальный файл jar из java-программы?

Файл jar отсутствует в пути к классам Java-вызывающей программы.

Ответы [ 9 ]

41 голосов
/ 08 февраля 2011

Я предлагаю вам использовать ProcessBuilder и запустить новую JVM.

Вот кое-что, с чего можно начать:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
12 голосов
/ 27 октября 2013
    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));
4 голосов
/ 03 февраля 2012

Другой способ сделать это в Windows:

Runtime.getRuntime().exec("cmd /c start jarFile");

таким образом, вы также можете установить приоритет вашего процесса (обычный / низкий / и т. Д.)

3 голосов
/ 08 февраля 2011

Во-первых, описание вашей проблемы немного неясно.Я не понимаю, хотите ли вы загрузить классы из файла jar для использования в вашем приложении, или файл jar содержит основной файл, который вы хотите запустить.Я предполагаю, что это второй.

Если так, у вас есть много вариантов здесь.Самым простым будет следующее:

String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);

Вуаля ... Если вам не нужно запускать файл jar, а просто загружать из него классы, дайте мне знать.

2 голосов
/ 12 февраля 2015

Вы можете запустить JAR-файл из любого места, используя только этот однострочный код.

    Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));

, где

new File("your path to jar")

Надеюсь, это поможет.

Спасибо.

2 голосов
/ 08 февраля 2011

Может ли что-то подобное быть полезным?

http://download.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html

0 голосов
/ 08 марта 2019

Чтобы запустить исполняемый 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 завершается.

0 голосов
/ 07 июля 2017
  1. Добавить библиотеку jar в ваш проект
  2. Импорт основного класса (см. Манифест в файле jar)
  3. Вызвать статический метод main с аргументами

    String args[] = {"-emaple","value"};
    PortMapperStarter.main(args);
    
0 голосов
/ 17 января 2013

1) Задайте путь к классу из переменных среды

2) Перейдите в папку, в которой находится файл JAR

3) Выполните следующие команды в командной строке

java -jar jarfilename

...