src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java
Print this page
@@ -22,63 +22,62 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
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.*;
/**
* ClassPath for Java SE and JDK
*/
class PlatformClassPath {
private final static List<Archive> javaHomeArchives = init();
+
static List<Archive> 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<Archive> init() {
- List<Archive> result = new ArrayList<Archive>();
- String javaHome = System.getProperty("java.home");
- File jre = new File(javaHome, "jre");
- File lib = new File(javaHome, "lib");
-
+ List<Archive> 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 <javahome>/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<Archive> addJarFiles(File f) throws IOException {
- final List<Archive> result = new ArrayList<Archive>();
- final Path root = f.toPath();
+ private static List<Archive> addJarFiles(final Path root) throws IOException {
+ final List<Archive> result = new ArrayList<>();
final Path ext = root.resolve("ext");
Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException
@@ -89,17 +88,16 @@
// skip other cobundled JAR files
return FileVisitResult.SKIP_SUBTREE;
}
}
@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;
}
});
return result;