# HG changeset patch # User mchung # Date 1417543779 0 # Node ID 0b86bdf28e072715e759ec29127b295dee30fbd0 # Parent abb8b1de96ff58a1d74689f14cb22157dcd28946# Parent c03d85ef5e6a7fce883a8d90cc8c143db50b9558 Merge diff -r abb8b1de96ff -r 0b86bdf28e07 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Tue Dec 02 20:13:17 2014 +0300 +++ b/src/share/vm/runtime/arguments.cpp Tue Dec 02 18:09:39 2014 +0000 @@ -3543,7 +3543,7 @@ if (nonEmptyDirs > 0) { jio_fprintf(defaultStream::output_stream(), - "Endorsed standards override mechanism and extension mechanism" + "Endorsed standards override mechanism and extension mechanism " "will not be supported in a future release.\n" "Refer to JEP 220 for details (http://openjdk.java.net/jeps/220).\n"); return false; diff -r abb8b1de96ff -r 0b86bdf28e07 test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java --- a/test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java Tue Dec 02 20:13:17 2014 +0300 +++ b/test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java Tue Dec 02 18:09:39 2014 +0000 @@ -26,10 +26,16 @@ * @bug 8064667 * @summary Sanity test for -XX:+CheckEndorsedAndExtDirs * @library /testlibrary - * @run main/othervm -XX:+CheckEndorsedAndExtDirs EndorsedExtDirs + * @run main/othervm EndorsedExtDirs */ import com.oracle.java.testlibrary.*; +import java.io.File; +import java.io.IOException; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; @@ -38,9 +44,28 @@ public static void main(String arg[]) throws Exception { fatalError("-XX:+CheckEndorsedAndExtDirs", "-Djava.endorsed.dirs=foo"); fatalError("-XX:+CheckEndorsedAndExtDirs", "-Djava.ext.dirs=bar"); + testNonEmptySystemExtDirs(); } - static void fatalError(String... args) throws Exception { + static void testNonEmptySystemExtDirs() throws Exception { + String home = System.getProperty("java.home"); + Path ext = Paths.get(home, "lib", "ext"); + String extDirs = System.getProperty("java.ext.dirs"); + String[] dirs = extDirs.split(File.pathSeparator); + long count = 0; + for (String d : dirs) { + Path path = Paths.get(d); + if (Files.notExists(path) || path.equals(ext)) continue; + count += Files.find(path, 1, (Path p, BasicFileAttributes attr) + -> p.getFileName().toString().endsWith(".jar")) + .count(); + } + if (count > 0) { + fatalError("-XX:+CheckEndorsedAndExtDirs"); + } + } + + static ProcessBuilder newProcessBuilder(String... args) { List commands = new ArrayList<>(); String java = System.getProperty("java.home") + "/bin/java"; commands.add(java); @@ -51,8 +76,15 @@ commands.add(cpath); commands.add("EndorsedExtDirs"); - System.out.println("Launching " + commands); - ProcessBuilder pb = new ProcessBuilder(commands); + System.out.println("Process " + commands); + return new ProcessBuilder(commands); + } + + static void fatalError(String... args) throws Exception { + fatalError(newProcessBuilder(args)); + } + + static void fatalError(ProcessBuilder pb) throws Exception { OutputAnalyzer output = new OutputAnalyzer(pb.start()); output.shouldContain("Could not create the Java Virtual Machine"); output.shouldHaveExitValue(1);