回答:
次のドキュメントを参照してください。
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
。
理由:javaw
OSで内部プロセスを開き(java.lang.Processクラスを使用して十分)、既知の出力リダイレクトをこのプロセスに転送すると思います。コマンドラインでリダイレクトが指定されていない場合、何もリダイレクトされず、内部で開始されたプロセスにjavaw
はコンソール出力がありません。java.lang.Processの動作も同様です。仮想マシンはこの内部機能も使用する場合がありますjavaw
。
'start'を使用すると、WindowsコンソールはWindowsが起動後にコマンドを実行するための新しいプロセスを作成しますが、残念ながらこのメカニズムでは、起動されたサブプロセスに特定のリダイレクトを使用しません。
java -cp ...
です。ほとんど誰もそれを望んでいないので、javaw
その迷惑なウィンドウを消すための選択です。