2011-02-08 3 views

ответ

34

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

Вот что-то, чтобы вы начали:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar"); 
pb.directory(new File("preferred/working/directory")); 
Process p = pb.start(); 
+0

@aioobe Могу ли я интегрировать System.out в исходной программе?извините вопрос, но я новичок в java – vfgjrk

+1

Не уверен, что я понимаю ваш комментарий, но вы получаете 'Process' обратно из' start() ', который предоставляет вам' getInputStream'/'getOutputStream'. – aioobe

+0

ОК, это работает! Большое спасибо – vfgjrk

3

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

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

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

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

+1

Пожалуйста, перетащите себя (пинать и кричать - если нужно) в способности Java 1.5 & ProcessBuilder. –

+0

Спасибо, что это работает. Большое спасибо. – Abdul

+0

Это решение будет делать то же самое, что и «ProcessBuilder» (за исключением случаев, когда вы хотите закрыть и т. Д.), И вам нужно ввести меньше. В моем случае мне понадобится пусковая установка, которая закрывается после открытия банки, так что этого достаточно для меня. – Hydro

3

Другой способ сделать на окнах:

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

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

-1

1) Установить путь класса из переменных окружения

2) Перейти к папке, в которой существует ваш файл jar

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

Java -jar jarfilename

+1

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

10
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)); 
+1

Используйте System.err.println (новая строка (c)); для печати сообщений об ошибках. –

2

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

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

где

new File("your path to jar") 

Надеется, что это помогает.

Спасибо.

+1

Работает ли это за пределами оконной машины? – katzenhut

0
  1. Добавить библиотеку баночку в свой проект
  2. Импорт основной класс (см проявляется в банке файл)
  3. Invoke статический метод основной с аргументами

    String args[] = {"-emaple","value"}; 
    PortMapperStarter.main(args); 
    
Смежные вопросы