static String runHive(String... args) throws Exception { ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); ByteArrayOutputStream errBytes = new ByteArrayOutputStream(); PrintStream outSaved = System.out; PrintStream errSaved = System.err; System.setOut(new PrintStream(outBytes, true)); System.setErr(new PrintStream(errBytes, true)); try { CliDriver.run(args); } finally { System.setOut(outSaved); System.setErr(errSaved); } ByteArrayInputStream outBytesIn = new ByteArrayInputStream(outBytes.toByteArray()); ByteArrayInputStream errBytesIn = new ByteArrayInputStream(errBytes.toByteArray()); BufferedReader is = new BufferedReader(new InputStreamReader(outBytesIn)); BufferedReader es = new BufferedReader(new InputStreamReader(errBytesIn)); StringBuilder output = new StringBuilder(); String line; while ((line = is.readLine()) != null) { if (output.length() > 0) { output.append("\n"); } output.append(line); } if (output.length() == 0) { output = new StringBuilder(); while ((line = es.readLine()) != null) { output.append("\n"); output.append(line); } } return output.toString(); }