src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java

Print this page

        

*** 22,84 **** * 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.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); } 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"); ! try { ! if (jre.exists() && jre.isDirectory()) { ! result.addAll(addJarFiles(new File(jre, "lib"))); ! result.addAll(addJarFiles(lib)); ! } else if (lib.exists() && lib.isDirectory()) { // either a JRE or a jdk build image ! File classes = new File(javaHome, "classes"); ! if (classes.exists() && classes.isDirectory()) { // jdk build outputdir result.add(new Archive(classes, ClassFileReader.newInstance(classes))); } // add other JAR files ! result.addAll(addJarFiles(lib)); } else { ! throw new RuntimeException("\"" + javaHome + "\" not a JDK home"); } } catch (IOException e) { ! throw new RuntimeException(e); } - return result; } ! private static List<Archive> addJarFiles(File f) throws IOException { ! final List<Archive> result = new ArrayList<Archive>(); ! final Path root = f.toPath(); final Path ext = root.resolve("ext"); Files.walkFileTree(root, new SimpleFileVisitor<Path>() { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException --- 22,83 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.tools.jdeps; 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) { ! // 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<>(); ! Path home = Paths.get(System.getProperty("java.home")); try { ! 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 ! 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(home.resolve("lib"))); } else { ! throw new RuntimeException("\"" + home + "\" not a JDK home"); } + return result; } catch (IOException e) { ! throw new Error(e); } } ! 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,105 **** // skip other cobundled JAR files return FileVisitResult.SKIP_SUBTREE; } } @Override ! public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { ! File f = file.toFile(); ! String fn = f.getName(); if (fn.endsWith(".jar") && !fn.equals("alt-rt.jar")) { ! result.add(new Archive(f, ClassFileReader.newInstance(f))); } return FileVisitResult.CONTINUE; } }); return result; --- 88,103 ---- // skip other cobundled JAR files return FileVisitResult.SKIP_SUBTREE; } } @Override ! public FileVisitResult visitFile(Path p, BasicFileAttributes attrs) throws IOException { ! String fn = p.getFileName().toString(); if (fn.endsWith(".jar") && !fn.equals("alt-rt.jar")) { ! result.add(new Archive(p, ClassFileReader.newInstance(p))); } return FileVisitResult.CONTINUE; } }); return result;