回答:
次のドキュメントを参照してください。
javaコマンド1 / javawコマンド2
javaこのツールは、Javaアプリケーションを起動します。これは、Javaランタイム環境を開始し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出すことによって行われます。- この
javawコマンドはと同じですがjava、javaw関連するコンソールウィンドウがない点が異なります。コマンドプロンプトウィンドウを表示したくないjavaw場合に使用します。
javawsコマンド、「Java Web Startコマンド」
この
javawsコマンドは、Javaネットワーク起動プロトコル(JNLP)のリファレンス実装であるJava Web Startを起動します。Java Web Startは、ネットワークでホストされているJavaアプリケーション/アプレットを起動します。
JNLPファイルが指定されている場合は、JNLPファイルで指定されてjavawsいるJavaアプリケーション/アプレットを起動します。ランチャーは、現在のリリースではサポートされているオプションのセットがあります。ただし、オプションは将来のリリースで削除される可能性があります。javaws
JDK 9リリースノートの非推奨のAPI、機能、オプションもご覧ください。
Java Deployment Technologiesは非推奨であり、将来のリリースで削除される予定です
。JavaアプレットおよびWebStart機能(アプレットAPI、Javaプラグイン、Javaアプレットビューア、JNLP、javawsツールを含むJava Web Startなど)はすべてJDKで非推奨です。 9および将来のリリースで削除されます。
java:コンソールに関連付けられ、出力/エラーを表示するJavaアプリケーション実行プログラム
javaw:(Javaウィンドウ)アプリケーションエグゼキュータがコンソールに関連付けられていません。したがって、出力/エラーは表示されません。出力/エラーをテキストファイルにサイレントプッシュするために使用できます。主にGUIベースのアプリケーションを起動するために使用されます。
javaws:(Java web start)分散Webアプリケーションをダウンロードして実行します。ここでも、コンソールは関連付けられていません。
すべてJREの一部であり、同じJVMを使用します。
javaw、PATHにある必要がありますか?(そうではありません)
java.exeはコンソールに関連付けられていますが、javaw.exeにはそのような関連付けはありません。したがって、java.exeを実行すると、出力とエラーストリームが表示されるコマンドプロンプトウィンドウが自動的に開きます。
javawコマンドはjavaと同じですが、javawに関連するコンソールウィンドウがない点が異なります。コマンドプロンプトウィンドウを表示しない場合は、javawを使用します。javawランチャーは、失敗するとエラー情報を含むウィンドウを表示します。
そして、javawsはJava Web Startアプリケーション、アプレット、またはそのようなもののためのものだと思います。
私は出力リダイレクトが動作することを確認しましたjavaw:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
つまり、JavaアプリケーションがSystem.outまたはSystem.errを介して何かを出力する場合、Javaを使用する場合(なしw)と同様に、これらのファイルに書き込まれます。特にの起動時javaに、JREはエラー出力パイプに起動エラー(クラスが見つからない)を書き込むことがあります。この点で、エラーについて知ることは不可欠です。javawが呼び出された場合は、コンソールリダイレクトを使用することをお勧めします。
逆に使うと
start java .... 1>log.txt 2>err.txt
Windowsのコンソールでstartコマンド、コンソール出力のリダイレクトはないではないと動作しjavaたりしてjavaw。
理由:javawOSで内部プロセスを開き(java.lang.Processクラスを使用して十分)、既知の出力リダイレクトをこのプロセスに転送すると思います。コマンドラインでリダイレクトが指定されていない場合、何もリダイレクトされず、内部で開始されたプロセスにjavawはコンソール出力がありません。java.lang.Processの動作も同様です。仮想マシンはこの内部機能も使用する場合がありますjavaw。
'start'を使用すると、WindowsコンソールはWindowsが起動後にコマンドを実行するための新しいプロセスを作成しますが、残念ながらこのメカニズムでは、起動されたサブプロセスに特定のリダイレクトを使用しません。
java -cp ...です。ほとんど誰もそれを望んでいないので、javawその迷惑なウィンドウを消すための選択です。