2016-07-29 12 views
1

私はアプリケーションメインクラスを実行する次のコードを持ち、次のコードを持つLauncherクラスを持つアプリケーションを開発しています。私は私のアプリケーションは、私は次のコマンドでバッチファイルを使用して、私のjarファイルを実行しようとした開始されていないことがわかりました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) 

私はアプリケーションのメインをeclipse経由で実行しようとしたアプリケーションクラスに例外があるため、アプリケーションは期待どおりに起動しました。

+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

「エラーストリーム」を使用して出力を収集することができますif捕らえられた例外はありません。このリンクには良い例があります:[http://stackoverflow.com/questions/13008526/runtime-getruntime-execcmd-hanging] – ma3stro

+0

そしてそれが役に立たないなら、http:// docsというProcessBuilderクラスを試してみてください。 oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html – ma3stro

関連する問題