mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8198480: Improve ClassLoaders static init block
Reviewed-by: alanb, mchung
This commit is contained in:
parent
3c9dfe26ed
commit
749ad1ee03
1 changed files with 15 additions and 27 deletions
|
@ -54,39 +54,27 @@ public class ClassLoaders {
|
|||
private static final PlatformClassLoader PLATFORM_LOADER;
|
||||
private static final AppClassLoader APP_LOADER;
|
||||
|
||||
/**
|
||||
* Creates the built-in class loaders
|
||||
*/
|
||||
// Creates the built-in class loaders.
|
||||
static {
|
||||
|
||||
// -Xbootclasspath/a or -javaagent with Boot-Class-Path attribute
|
||||
URLClassPath bcp = null;
|
||||
String s = VM.getSavedProperty("jdk.boot.class.path.append");
|
||||
if (s != null && s.length() > 0)
|
||||
bcp = new URLClassPath(s, true);
|
||||
String append = VM.getSavedProperty("jdk.boot.class.path.append");
|
||||
BOOT_LOADER =
|
||||
new BootClassLoader((append != null && append.length() > 0)
|
||||
? new URLClassPath(append, true)
|
||||
: null);
|
||||
PLATFORM_LOADER = new PlatformClassLoader(BOOT_LOADER);
|
||||
|
||||
// we have a class path if -cp is specified or -m is not specified.
|
||||
// If neither is specified then default to -cp <working directory>
|
||||
// If -cp is not specified and -m is specified, the value of
|
||||
// java.class.path is an empty string, then no class path.
|
||||
String mainMid = System.getProperty("jdk.module.main");
|
||||
// A class path is required when no initial module is specified.
|
||||
// In this case the class path defaults to "", meaning the current
|
||||
// working directory. When an initial module is specified, on the
|
||||
// contrary, we drop this historic interpretation of the empty
|
||||
// string and instead treat it as unspecified.
|
||||
String cp = System.getProperty("java.class.path");
|
||||
if (mainMid == null) {
|
||||
// no main module specified so class path required
|
||||
if (cp == null) {
|
||||
cp = "";
|
||||
}
|
||||
} else {
|
||||
// main module specified, ignore empty class path
|
||||
if (cp != null && cp.length() == 0) {
|
||||
cp = null;
|
||||
}
|
||||
if (cp == null || cp.length() == 0) {
|
||||
String initialModuleName = System.getProperty("jdk.module.main");
|
||||
cp = (initialModuleName == null) ? "" : null;
|
||||
}
|
||||
URLClassPath ucp = new URLClassPath(cp, false);
|
||||
|
||||
// create the class loaders
|
||||
BOOT_LOADER = new BootClassLoader(bcp);
|
||||
PLATFORM_LOADER = new PlatformClassLoader(BOOT_LOADER);
|
||||
APP_LOADER = new AppClassLoader(PLATFORM_LOADER, ucp);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue