エラーメッセージを表示した後、単純なJavaプログラムのコンソールを終了するにはどうすればよいですか?
現在、私のコードには次のものがあります。
...
...
if (some condition){
//print error
System.exit();
...
...
ただし、これSystem.exit();
によりコンソールは開いたままになります。私もやってみexit(0);
ましSystem.exit(0);
た。
System.exit(1);
正常に動作するはずです。エラーで終了する場合は、通常、ゼロ以外の終了コードを設定することに注意してください。ドキュメントから:
引数はステータスコードとして機能します。慣例により、ゼロ以外のステータスコードは異常終了を示します。
これは、一般的な規則を使用してスクリプトを作成できること、プログラムを生成するプロセスがそれに応じて反応できることなどを意味します。
アプリケーションが実行されているコマンドプロンプトウィンドウを閉じたい場合、それを行う方法はないと思います(少なくともうまくいきません)。
コマンドプロンプトからアプリケーションを起動してから、既存のコマンドプロンプトウィンドウを閉じたいのはなぜですか?これにより、出力しているエラーメッセージが確実に削除されます(ログに記録されている場合を除きます。その場合、閉じたいウィンドウに出力するのはなぜですか?)。
これはWindows固有ですが、Windowsエクスプローラーでショートカットを作成するjava -jar MyJarFile.jar
か、java MyCompiledClass
必要な操作を実行しますか?この種のアプローチの説明は、ここにあります。
私があなたを正しく理解しているなら、あなたはコマンドプロンプトであなたのプログラムを実行したいと思います、そしてプログラムが失敗したならあなたはそれがエラーメッセージを表示したいです、プログラムとコンマプロンプトウィンドウを閉じますか?
この場合、私が考えることができる唯一のことは、プログラムの終了ステータスをチェックするバッチファイルでプログラムを実行することです。したがって、コードにエラーメッセージを記述し、ユーザーが実際に表示できるように数秒間スリープしてから、ステータスコード1.egで終了することをお勧めします。
if(SomeCondition){
System.err.println("ERROR MESSAGE...");
Thread.sleep(3000);//Sleep for 3 seconds...
System.exit(1);
}
次に、「ERRORLEVEL」環境変数をチェックするバッチファイルからプログラムを実行します。
java <INSERT_PROGRAM_NAME>
IF %ERRORLEVEL% == 1 exit
お役に立てれば :)
java.lang.System
exit
パラメータのないメソッドがないため、System.exit();
コンパイルエラーになります。(System.exit(1);
ただし、問題はありません。)コードが機能しない理由は、おそらくコードを再コンパイルしていないため、その行を追加する前の古いバージョンを実行しているためです。
JavaからFirefox.batファイルをインストールしようとしているとします。
public static void main(String[] args) throws InterruptedException {
try {
String[] command = { "cmd.exe", "/C", "Start", "C:\\firefox.bat" };
Runtime.getRuntime().exec(command).waitFor();
}
catch (Exception e)
{
System.out.println("Execution error");
}
}
これによりコマンドプロンプトがトリガーされ、Firefoxのインストール後に手動でウィンドウを閉じてしまうまでウィンドウが開きます。
修正は、コマンドの直後の.batファイルに「exit」を配置することです。例:
あなたのfirefox.batには
@Start / wait "Firefox" "C:\ Firefox Setup 41.0.exe" -ms
出口
これにより、コマンドプロンプトウィンドウが閉じます。お役に立てれば...
以下のリンクをご覧ください
http://www.cs.bris.ac.uk/jot/decisions/exercise11/exit.html
プログラムは終了コードを返さなければならないという一般的な規則があります。終了コードは、成功を示す場合はゼロ、失敗を示す場合はゼロ以外にする必要があります。プラットフォームは、ゼロ以外のコードの意味が異なるため、プログラマーは失敗の一般的な兆候として1を返すことがよくあります。
System.exit(); JVMを終了します。intはステータスコードです(0は「通常の」終了を意味します)。終了しない場合は、コードのその部分に到達できず、まったく実行されていないためです。