2016-07-29 3 views
1

Я разрабатываю приложение, которое имеет класс Launcher, который имеет следующий код для выполнения основного класса приложения и имеет следующий код.Запуск основного приложения приложения через jar

public class Launcher { 

private static final String jarName = "LDC_MCM.jar"; 
private static final String mainClassWithPackageName = "com.ars.ldcmcm.Application"; 

public static void main(String[] args) { 
    String path = Configuration.getInstance().getAppFolder(); 
    String cmd = "java -XX:+ForceTimeHighResolution -cp "+path+"\\"+jarName+" "+ mainClassWithPackageName; 
    System.out.println("invoking... \n"+cmd); 
    try { 
      Runtime.getRuntime().exec(cmd); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

} 

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

java -jar LDC_MCM.jar 

Результат выполнения приведен ниже.

F:\SMC>java -Dfile.encoding=UTF-8 -jar LDC_MCM.jar 
invoking... 
java -XX:+ForceTimeHighResolution -cp F:\SMC\LDC_MCM.jar com.ars.ldcmcm.Application 

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

Пожалуйста, разместите комментарий, если вам потребуются дополнительные сведения. com.ars.ldcmcm.Application установит рамку для приложения качания.

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

F:\>java -XX:+ForceTimeHighResolution -cp F:\SMC\LDC_MCM.jar com.ars.ldcmcm.Application 
Exception in thread "main" java.lang.NullPointerException 
    at com.ars.ldcmcm.Application.main(Application.java:283) 

Поскольку исключение в классе приложения я попытался запустить основное приложение через затмение, приложение началось, как и ожидалось.

+0

что является 'com.ars.ldcmcm.Application' делать? или каков ваш ожидаемый результат. – TomN

+0

Это пакет в моем приложении, который имеет основные функции для запуска всех моих потоков, связанных с приложением. – Manesh

+0

будет ли он создавать «Frame» или распечатать любой вывод? как вы узнали, что он не работает. команда в порядке, она должна запускаться, если путь к файлу правильный. – TomN

ответ

0

Смотрите, если это делает никакой разницы:

public static void main(String[] args) { 
String path = Configuration.getInstance().getAppFolder(); 
String cmd = "java -XX:+ForceTimeHighResolution -cp "+path+"\\"+jarName+" "+ mainClassWithPackageName; 
System.out.println("invoking... \n"+cmd); 
Process p; 
try { 
     P = Runtime.getRuntime().exec(cmd); 
     p.waitFor(); 
     System.out.println("Script executed successfully"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

}

+0

Еще один результат ... – Manesh

+0

Возможно, вы захотите использовать 'Error Stream' для сбора вывода if исключение не исключено. В этой ссылке есть хороший пример: [http://stackoverflow.com/questions/13008526/runtime-getruntime-execcmd-hanging] – ma3stro

+0

И если это не поможет, попробуйте использовать класс ProcessBuilder: http: // docs. oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html – ma3stro

Смежные вопросы