コンソール/コマンドウィンドウからJavaアプリケーションを切断する

command-line java

可能な重複: https://stackoverflow.com/questions/264687/is-there-a-way-to-the-ide-win32-launch-console-from-a-java-program-if-possible Javaプログラムからwin32起動コンソールを隠す方法はありますか(可能であればJNIなしで)] ___

Java SwingアプリケーションをWindows上のバッチファイルで実行すると、Javaアプリケーションが実行されている間、コンソール/コマンドウィンドウは開いたままになります。 これは私が持っていたくないだろう私のタスクバーに余分なウィンドウを作成します。 しかし、コマンドウィンドウを閉じると、Javaアプリケーションが停止します。 アプリケーションの実行中にSwingアプリケーションとコンソールウィンドウを閉じた後にjava.exeを終了させるには、おそらくバッチファイル、コマンドラインパラメータ、またはアプリケーションのコード変更を使用します。

主な方法は以下の通りです。

public static void main(String args []){

ApplContext applContext = new ApplContext();スロー可能なエラー= null。

{applContext.setUserConfigDir(args.length> 0? args [0]:null); applContext.loadData(); ApplTools.initLookAndFeel(パラメータ.P_NIMBUS_LAF.of(applContext.getParameters())); catch(Throwable e){error = e;} }

// JWorkSheetはJFrameです。 new JWorkSheet(applContext、error).setVisible(); }

  3  2


ベストアンサー

アプリケーションをjavaではなく `javaw.exe`で実行してください。 batファイルから実行している場合は、これを `start`コマンドと組み合わせて使用​​します。

> javaw.exe -jar myapp.jarを起動します。

このモードで実行するときは、適切なロギングを設定するか、またはデバッグにコンソールを使用する場合は少なくとも出力ストリームをリダイレクトすることをお勧めします。 たとえば、コンソールがないと、未処理の例外が発生しても、それらのわかりやすいスタックトレースは表示されません。

注意: `java.exe`はWindowsの_console_アプリケーションです。 そのため、起動方法や実行中のスレッドに関係なく、コンソールがコンソールに割り当てられます。 これが `javaw.exe`が存在する理由です。

6


理想的には、コードのどこかで最終的に行うことはhttp://java.sun.com/javase/6/docs/api/javax / swing / SwingUtilities.html[`SwingUtilities.invokeLater(Runable r) `]です。 それはあなたのGUIコードを正しいスレッドに投げるでしょう、そしてあなたはメインスレッドが終了した後にコマンドラインを閉じることができるはずです。

これは私が話していることの基本的な例です。

public static void main(String [] args){SwingUtilities.invokeLater(new Runnable(){public void run(){JFrame yourWindow = new YourFrame(); yourWindow.createAndShow();}}}

1


タイトルとURLをコピーしました