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;