2016-07-29 10 views
1

Ich entwickle eine Anwendung, die eine Launcher-Klasse hat, die den folgenden Code zum Ausführen der Anwendung Hauptklasse hat und es den folgenden Code hat.Starten der Anwendung Hauptklasse über jar

Als ich sah, dass meine Anwendung nicht gestartet wurde, versuchte ich, mein jar über eine Batchdatei mit den folgenden Befehlen auszuführen.

java -jar LDC_MCM.jar 

Das Ergebnis der Ausführung ist unten angegeben.

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 

Die Ausführung bleibt so, die Anwendung startet nicht. Kann jemand sagen, warum die Anwendung so bleibt, ohne dass meine Anwendung gestartet wird? Ich habe versucht, meinen Code auf eine ältere Version zu übertragen, um zu sehen, ob es irgendetwas mit dem Anwendungscode zu tun hat.

Bitte schreiben Sie einen Kommentar, wenn Sie weitere Informationen benötigen. com.ars.ldcmcm.Application richtet einen Rahmen für eine Swing-Anwendung ein.

Ich versuchte mehr in Bezug auf dies. Ich habe versucht, den Befehl direkt über die Eingabeaufforderung auszuführen, und ich habe eine Ausnahme wie unten angegeben.

Da es eine Ausnahme in der Anwendungsklasse gibt Ich habe versucht, die Anwendung main über Eclipse auszuführen, die Anwendung wie erwartet gestartet.

+0

was 'com.ars.ldcmcm.Application' tun? oder was ist deine erwartete Ausgabe. – TomN

+0

Es ist ein Paket in meiner Anwendung, die die Hauptfunktionen hat, um alle meine mit der Anwendung verbundenen Threads auszulösen. – Manesh

+0

wird es einen 'Frame' einrichten oder einen Ausgang drucken? Woher weißt du, dass es nicht läuft? Der Befehl ist in Ordnung, er sollte starten, wenn der Dateipfad korrekt ist. – TomN

Antwort

0

sehen, ob dies einen Unterschied macht:

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

Immer noch das gleiche Ergebnis ... – Manesh

+0

Sie könnten 'Error Stream' verwenden, um die Ausgabe zu sammeln, wenn Es gibt keine Ausnahme ist gefangen. Es gibt ein gutes Beispiel in diesem Link: [http://stackoverflow.com/questions/13008526/runtime-getruntime-execcmd-hanging] – ma3stro

+0

Und wenn das nicht hilft, können Sie versuchen, ProcessBuilder-Klasse verwenden: http: // docs. oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html – ma3stro

Verwandte Themen