diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux --- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux 2010-09-01 22:21:08.815402468 +0100 +++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux 2010-09-01 22:23:19.572081778 +0100 @@ -62,6 +62,32 @@ private /* final */ InputStream stdout; private /* final */ InputStream stderr; + /** + * Required package-private classes taken from + * Oracle's java.lang.ProcessBuilder for bootstrapping. + */ + + /** + * Implements a null input stream. + */ + static class NullInputStream extends InputStream { + static final NullInputStream INSTANCE = new NullInputStream(); + private NullInputStream() {} + public int read() { return -1; } + public int available() { return 0; } + } + + /** + * Implements a null output stream. + */ + static class NullOutputStream extends OutputStream { + static final NullOutputStream INSTANCE = new NullOutputStream(); + private NullOutputStream() {} + public void write(int b) throws IOException { + throw new IOException("Stream closed"); + } + } + /* this is for the reaping thread */ private native int waitForProcessExit(int pid); @@ -155,15 +181,15 @@ void initStreams(int[] fds) throws IOException { stdin = (fds[0] == -1) ? - ProcessBuilder.NullOutputStream.INSTANCE : + NullOutputStream.INSTANCE : new ProcessPipeOutputStream(fds[0]); stdout = (fds[1] == -1) ? - ProcessBuilder.NullInputStream.INSTANCE : + NullInputStream.INSTANCE : new ProcessPipeInputStream(fds[1]); stderr = (fds[2] == -1) ? - ProcessBuilder.NullInputStream.INSTANCE : + NullInputStream.INSTANCE : new ProcessPipeInputStream(fds[2]); processReaperExecutor.execute(new Runnable() { @@ -275,7 +301,7 @@ byte[] stragglers = drainInputStream(in); in.close(); this.in = (stragglers == null) ? - ProcessBuilder.NullInputStream.INSTANCE : + NullInputStream.INSTANCE : new ByteArrayInputStream(stragglers); if (buf == null) // asynchronous close()? this.in = null; @@ -306,7 +332,7 @@ // We know of no reason to get an IOException, but if // we do, there's nothing else to do but carry on. } - this.out = ProcessBuilder.NullOutputStream.INSTANCE; + this.out = NullOutputStream.INSTANCE; } } } diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris --- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris 2010-09-01 22:21:08.815402468 +0100 +++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris 2010-09-01 22:22:33.204096111 +0100 @@ -45,6 +45,32 @@ private DeferredCloseInputStream stdout_inner_stream; private InputStream stderr_stream; + /** + * Required package-private classes taken from + * Oracle's java.lang.ProcessBuilder for bootstrapping. + */ + + /** + * Implements a null input stream. + */ + static class NullInputStream extends InputStream { + static final NullInputStream INSTANCE = new NullInputStream(); + private NullInputStream() {} + public int read() { return -1; } + public int available() { return 0; } + } + + /** + * Implements a null output stream. + */ + static class NullOutputStream extends OutputStream { + static final NullOutputStream INSTANCE = new NullOutputStream(); + private NullOutputStream() {} + public void write(int b) throws IOException { + throw new IOException("Stream closed"); + } + } + /* this is for the reaping thread */ private native int waitForProcessExit(int pid); @@ -86,7 +112,7 @@ java.security.AccessController.doPrivileged( new java.security.PrivilegedAction() { public Void run() { if (std_fds[0] == -1) - stdin_stream = ProcessBuilder.NullOutputStream.INSTANCE; + stdin_stream = NullOutputStream.INSTANCE; else { FileDescriptor stdin_fd = new FileDescriptor(); fdAccess.set(stdin_fd, std_fds[0]); @@ -95,7 +121,7 @@ } if (std_fds[1] == -1) - stdout_stream = ProcessBuilder.NullInputStream.INSTANCE; + stdout_stream = NullInputStream.INSTANCE; else { FileDescriptor stdout_fd = new FileDescriptor(); fdAccess.set(stdout_fd, std_fds[1]); @@ -104,7 +130,7 @@ } if (std_fds[2] == -1) - stderr_stream = ProcessBuilder.NullInputStream.INSTANCE; + stderr_stream = NullInputStream.INSTANCE; else { FileDescriptor stderr_fd = new FileDescriptor(); fdAccess.set(stderr_fd, std_fds[2]);