<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">javac never uses assert.    We have a
      set of methods in javac.util.Assert that can be used instead.<br>
      <br>
      -- Jon<br>
      <br>
      <br>
      On 05/05/2014 04:18 AM, Fredrik Öhrström wrote:<br>
    </div>
    <blockquote
cite="mid:CALZT+jC7GfdRrUBhTi9k4xPz7-bO1OYVs1VERGuhD6bCRXtYZA@mail.gmail.com"
      type="cite">
      <div dir="ltr">The output from stdout and stderr from the
        background must always be logged into a file. The default name
        for that file is portfile+".stdouterr" 
        <div>Thus you could replace stdouterrfile == null with
          <div>
            <br>
            <div>assert(stdouterrfile != null &&
              stdouterrfile.length() >= 1)</div>
            <div><br>
            </div>
            <div>And get rid of /dev/null etc.</div>
            <div><br>
            </div>
            <div>For example if the background jvm cannot start, for
              example you supplied a bad -Xms setting, you need to see
              the error message somewhere.
              <div>
                It is not a good idea to force the client jvm to keep
                running. The client and the server must be independent.</div>
            </div>
          </div>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">
          2014-05-05 11:17 GMT+02:00 Andreas Lundblad <span dir="ltr"><<a
              moz-do-not-send="true"
              href="mailto:andreas.lundblad@oracle.com" target="_blank">andreas.lundblad@oracle.com</a>></span>:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div class="">On Fri, May 02, 2014 at 03:01:17PM -0700,
              Jonathan Gibbons wrote:<br>
              > The code to use NUL or /dev/null is somewhat icky. Is
              that actually<br>
              > the behavior you want?<br>
              > How about using ProcessBuilder.Redirect.INHERIT
              instead?<br>
              <br>
            </div>
            I don't think we want the output of the background sjavac
            server to be interleaved with the output of the sjavac
            instance that spawned it. (Especially since the log of the
            background server would be chopped off once the foreground
            process terminates.)<br>
            <br>
            The reason I can't simply leave the whole redirect logic out
            is because the background process halts once it's output
            buffer is full. The output of the background process *has*
            to be consumed in one way or another. I could solve this by
            spawning a separate thread in the foreground process whose
            sole purpose is to read and discand output from the
            background process:<br>
            <br>
                Thread discardOutputThread = new Thread() {<br>
                    public void run() {<br>
                        InputStream is = p.getInputStream();<br>
                        try { while (is.read() != -1); }<br>
                        catch (IOException e) { }<br>
                    }<br>
                };<br>
                discardOutputThread.setDaemon(true);<br>
                discardOutputThread.start();<br>
            <br>
            It just feels a bit awkward to leave a running dummy thread
            behind, and I can't find any documentation on what happens
            when the foreground process terminates and this thread
            stops. (Although it *did* work on when I tested it on
            Windows 2003 and Ubuntu.)<br>
            <br>
            So, while the NUL or /dev/null workaround does have a grain
            of platform dependency, I still thought it was the cleanest
            solution. I'm ready to reconsider this if others think
            differently.<br>
            <br>
            I'm somewhat surprised that there is no
            ProcessBuilder.Redirect.DISCARD. Does anybody know why such
            option is "missing"? :-(<br>
            <span class="HOEnZb"><font color="#888888"><br>
                -- Andreas<br>
              </font></span></blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>