25
26 package jdk.internal.jrtfs;
27
28 import java.net.URISyntaxException;
29 import java.net.URL;
30 import java.nio.file.FileSystem;
31 import java.nio.file.FileSystems;
32 import java.nio.file.Path;
33 import java.nio.file.Paths;
34 import java.security.AccessController;
35 import java.security.CodeSource;
36 import java.security.PrivilegedAction;
37
38 final class SystemImages {
39 private SystemImages() {}
40
41 static final String RUNTIME_HOME;
42 static final Path bootImagePath;
43 static final Path extImagePath;
44 static final Path appImagePath;
45 static {
46 PrivilegedAction<String> pa = SystemImages::findHome;
47 RUNTIME_HOME = AccessController.doPrivileged(pa);
48
49 FileSystem fs = FileSystems.getDefault();
50 bootImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "bootmodules.jimage");
51 extImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "extmodules.jimage");
52 appImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "appmodules.jimage");
53 }
54
55 /**
56 * Returns the appropriate JDK home for this usage of the FileSystemProvider.
57 * When the CodeSource is null (null loader) then jrt:/ is the current runtime,
58 * otherwise the JDK home is located relative to jrt-fs.jar.
59 */
60 private static String findHome() {
61 CodeSource cs = SystemImages.class.getProtectionDomain().getCodeSource();
62 if (cs == null)
63 return System.getProperty("java.home");
64
|
25
26 package jdk.internal.jrtfs;
27
28 import java.net.URISyntaxException;
29 import java.net.URL;
30 import java.nio.file.FileSystem;
31 import java.nio.file.FileSystems;
32 import java.nio.file.Path;
33 import java.nio.file.Paths;
34 import java.security.AccessController;
35 import java.security.CodeSource;
36 import java.security.PrivilegedAction;
37
38 final class SystemImages {
39 private SystemImages() {}
40
41 static final String RUNTIME_HOME;
42 static final Path bootImagePath;
43 static final Path extImagePath;
44 static final Path appImagePath;
45
46 static {
47 PrivilegedAction<String> pa = SystemImages::findHome;
48 RUNTIME_HOME = AccessController.doPrivileged(pa);
49
50 FileSystem fs = FileSystems.getDefault();
51 bootImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "bootmodules.jimage");
52 extImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "extmodules.jimage");
53 appImagePath = fs.getPath(RUNTIME_HOME, "lib", "modules", "appmodules.jimage");
54 }
55
56 /**
57 * Returns the appropriate JDK home for this usage of the FileSystemProvider.
58 * When the CodeSource is null (null loader) then jrt:/ is the current runtime,
59 * otherwise the JDK home is located relative to jrt-fs.jar.
60 */
61 private static String findHome() {
62 CodeSource cs = SystemImages.class.getProtectionDomain().getCodeSource();
63 if (cs == null)
64 return System.getProperty("java.home");
65
|