私は現在、言語サーバー(lsp4jの上)を作成しており、言語サーバーをデバッグする必要があります。言語サーバープロトコルサーバーは、stdinとstdoutを使用してクライアントと通信します。リモートデバッグJVMが標準出力stderrにテキストを出力しないようにするにはどうすればよいですか?
今、私はクライアント(VSCode)から起動されたサーバーをデバッグしたいので、私は、生成されたJVMプロセス用のデバッグ・フラグに追加:
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
突然これを実行すると、サーバーはしていませんsuspend = 0でもポートは開いており、ファイアウォールのmalarkeyは起きていないことが確認されました。
私は手動でコマンドラインを実行することを決めた、と私はそれがデバッグパラメータを受信した後、プロセスは、ないことをまず最初にstdoutに次の出力であることを参照してください。
Listening for transport dt_socket at address: 9999
(ダブルずに放出されます
これは、言語サーバープロトコルの一部ではないstdoutまたはstdinに何かを出力すると、クライアントがサーバーを拒否するため、言語サーバーをデバッグできないと考えられます。
私の質問は、ラウンドアバウト方式で、内部JVMメッセージをstdout、stdin、stderrで別のJVMパラメータでサイレントにすることが可能かどうかを尋ねることです。