title: How do I make remote debug JVM not output text on stdout, stderr?
body: <p>I'm currently writing a language server (atop of lsp4j), and need to debug my language server. Language server protocol servers uses stdin and stdout to communicate with the client.</p>
  
  <p>Now I want to debug a server that is launched from the client (VSCode), so I added in the debug flags for the spawned JVM process:</p>
  
  <pre><code>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
  </code></pre>
  
  <p>Upon doing this suddenly, the server does not work any more, even though suspend = 0 and I confirmed the port is open and that no firewall malarkey is happening.</p>
  
  <p>I decided to run the command line manually, and I see that the first thing that a process does, after it receives the debug parameters is to output the following to stdout:</p>
  
  <pre><code>Listening for transport dt_socket at address: 9999
  </code></pre>
  
  <p>(emitted without double quotes)</p>
  
  <p>I believe this is the reason that I cannot debug the language server, because outputting anything to stdout or stdin that is not part of the language server protocol <a href="https://github.com/Microsoft/language-server-protocol/blob/master/versions/protocol-2-x.md" rel="nofollow noreferrer">spec</a> forces the client to reject the server.</p>
  
  <p>My question therefore, in a roundabout fashion is to ask if it is possible to make internal JVM messages on stdout, stdin, stderr silent via another JVM parameter?</p>