--- old/src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java 2013-10-10 23:35:38.000000000 -0700 +++ new/src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java 2013-10-10 23:35:38.000000000 -0700 @@ -24,11 +24,11 @@ */ package com.sun.tools.jdeps; -import java.io.File; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.*; @@ -38,45 +38,44 @@ */ class PlatformClassPath { private final static List javaHomeArchives = init(); + static List getArchives() { return javaHomeArchives; } static boolean contains(Archive archive) { - return javaHomeArchives.contains(archive); + // jfxrt.jar is in jre/lib/ext directory but it does not belong + // to any profile + return javaHomeArchives.contains(archive) && !archive.getFileName().equals("jfxrt.jar"); } private static List init() { - List result = new ArrayList(); - String javaHome = System.getProperty("java.home"); - File jre = new File(javaHome, "jre"); - File lib = new File(javaHome, "lib"); - + List result = new ArrayList<>(); + Path home = Paths.get(System.getProperty("java.home")); try { - if (jre.exists() && jre.isDirectory()) { - result.addAll(addJarFiles(new File(jre, "lib"))); - result.addAll(addJarFiles(lib)); - } else if (lib.exists() && lib.isDirectory()) { + if (home.endsWith("jre")) { + // jar files in /jre/lib + result.addAll(addJarFiles(home.resolve("lib"))); + } else if (Files.exists(home.resolve("lib"))) { // either a JRE or a jdk build image - File classes = new File(javaHome, "classes"); - if (classes.exists() && classes.isDirectory()) { + Path classes = home.resolve("classes"); + if (Files.isDirectory(classes)) { // jdk build outputdir result.add(new Archive(classes, ClassFileReader.newInstance(classes))); } // add other JAR files - result.addAll(addJarFiles(lib)); + result.addAll(addJarFiles(home.resolve("lib"))); } else { - throw new RuntimeException("\"" + javaHome + "\" not a JDK home"); + throw new RuntimeException("\"" + home + "\" not a JDK home"); } + return result; } catch (IOException e) { - throw new RuntimeException(e); + throw new Error(e); } - return result; } - private static List addJarFiles(File f) throws IOException { - final List result = new ArrayList(); - final Path root = f.toPath(); + private static List addJarFiles(final Path root) throws IOException { + final List result = new ArrayList<>(); final Path ext = root.resolve("ext"); Files.walkFileTree(root, new SimpleFileVisitor() { @Override @@ -91,13 +90,12 @@ } } @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) + public FileVisitResult visitFile(Path p, BasicFileAttributes attrs) throws IOException { - File f = file.toFile(); - String fn = f.getName(); + String fn = p.getFileName().toString(); if (fn.endsWith(".jar") && !fn.equals("alt-rt.jar")) { - result.add(new Archive(f, ClassFileReader.newInstance(f))); + result.add(new Archive(p, ClassFileReader.newInstance(p))); } return FileVisitResult.CONTINUE; }