--- old/test/jdk/tools/jar/modularJar/Basic.java 2019-04-01 19:09:30.000000000 -0400 +++ new/test/jdk/tools/jar/modularJar/Basic.java 2019-04-01 19:09:30.000000000 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,9 @@ import java.io.*; import java.lang.module.ModuleDescriptor; import java.lang.reflect.Method; -import java.nio.file.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; import java.util.function.Consumer; import java.util.jar.JarEntry; @@ -32,6 +34,7 @@ import java.util.jar.JarInputStream; import java.util.jar.Manifest; import java.util.regex.Pattern; +import java.util.spi.ToolProvider; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -59,6 +62,16 @@ */ public class Basic { + + private static final ToolProvider JAR_TOOL = ToolProvider.findFirst("jar") + .orElseThrow(() + -> new RuntimeException("jar tool not found") + ); + private static final ToolProvider JAVAC_TOOL = ToolProvider.findFirst("javac") + .orElseThrow(() + -> new RuntimeException("javac tool not found") + ); + static final Path TEST_SRC = Paths.get(System.getProperty("test.src", ".")); static final Path TEST_CLASSES = Paths.get(System.getProperty("test.classes", ".")); static final Path MODULE_CLASSES = TEST_CLASSES.resolve("build"); @@ -977,13 +990,14 @@ } Stream.of(args).forEach(commands::add); ProcessBuilder p = new ProcessBuilder(commands); - if (stdinSource != null) + if (stdinSource != null) { p.redirectInput(stdinSource); + } return run(p); } static Result jar(String... args) { - return jarWithStdin(null, args); + return run(JAR_TOOL, args); } static Path compileModule(String mn) throws IOException { @@ -1071,10 +1085,8 @@ static void javac(Path dest, Path modulePath, Path... sourceFiles) throws IOException { - String javac = getJDKTool("javac"); List commands = new ArrayList<>(); - commands.add(javac); if (!TOOL_VM_OPTIONS.isEmpty()) { commands.addAll(Arrays.asList(TOOL_VM_OPTIONS.split("\\s+", -1))); } @@ -1092,7 +1104,13 @@ } Stream.of(sourceFiles).map(Object::toString).forEach(x -> commands.add(x)); - quickFail(run(new ProcessBuilder(commands))); + StringWriter sw = new StringWriter(); + try (PrintWriter pw = new PrintWriter(sw)) { + int rc = JAVAC_TOOL.run(pw, pw, commands.toArray(new String[0])); + if(rc != 0) { + throw new RuntimeException(sw.toString()); + } + } } static Result java(Path modulePath, String entryPoint, String... args) { @@ -1138,9 +1156,13 @@ return false; } - static void quickFail(Result r) { - if (r.ec != 0) - throw new RuntimeException(r.output); + static Result run(ToolProvider tp, String[] commands) { + int rc = 0; + StringWriter sw = new StringWriter(); + try (PrintWriter pw = new PrintWriter(sw)) { + rc = tp.run(pw, pw, commands); + } + return new Result(rc, sw.toString()); } static Result run(ProcessBuilder pb) {