50 import java.util.HashMap; |
50 import java.util.HashMap; |
51 import java.util.HashSet; |
51 import java.util.HashSet; |
52 import java.util.LinkedList; |
52 import java.util.LinkedList; |
53 import java.util.List; |
53 import java.util.List; |
54 import java.util.NoSuchElementException; |
54 import java.util.NoSuchElementException; |
|
55 import java.util.Properties; |
55 import java.util.Set; |
56 import java.util.Set; |
56 import java.util.Stack; |
57 import java.util.Stack; |
57 import java.util.StringTokenizer; |
58 import java.util.StringTokenizer; |
58 import java.util.jar.JarFile; |
59 import java.util.jar.JarFile; |
59 import java.util.zip.ZipEntry; |
60 import java.util.zip.ZipEntry; |
67 import jdk.internal.misc.SharedSecrets; |
68 import jdk.internal.misc.SharedSecrets; |
68 import jdk.internal.util.jar.InvalidJarIndexError; |
69 import jdk.internal.util.jar.InvalidJarIndexError; |
69 import jdk.internal.util.jar.JarIndex; |
70 import jdk.internal.util.jar.JarIndex; |
70 import sun.net.util.URLUtil; |
71 import sun.net.util.URLUtil; |
71 import sun.net.www.ParseUtil; |
72 import sun.net.www.ParseUtil; |
|
73 import sun.security.action.GetPropertyAction; |
72 |
74 |
73 /** |
75 /** |
74 * This class is used to maintain a search path of URLs for loading classes |
76 * This class is used to maintain a search path of URLs for loading classes |
75 * and resources from both JAR files and directories. |
77 * and resources from both JAR files and directories. |
76 * |
78 * |
77 * @author David Connelly |
79 * @author David Connelly |
78 */ |
80 */ |
79 public class URLClassPath { |
81 public class URLClassPath { |
80 private static final String USER_AGENT_JAVA_VERSION = "UA-Java-Version"; |
82 private static final String USER_AGENT_JAVA_VERSION = "UA-Java-Version"; |
81 private static final String JAVA_HOME; |
|
82 private static final String JAVA_VERSION; |
83 private static final String JAVA_VERSION; |
83 private static final boolean DEBUG; |
84 private static final boolean DEBUG; |
84 private static final boolean DISABLE_JAR_CHECKING; |
85 private static final boolean DISABLE_JAR_CHECKING; |
85 |
86 |
86 static { |
87 static { |
87 JAVA_HOME = java.security.AccessController.doPrivileged( |
88 Properties props = GetPropertyAction.getProperties(); |
88 new sun.security.action.GetPropertyAction("java.home")); |
89 JAVA_VERSION = props.getProperty("java.version"); |
89 JAVA_VERSION = java.security.AccessController.doPrivileged( |
90 DEBUG = (props.getProperty("sun.misc.URLClassPath.debug") != null); |
90 new sun.security.action.GetPropertyAction("java.version")); |
91 String p = props.getProperty("sun.misc.URLClassPath.disableJarChecking"); |
91 DEBUG = (java.security.AccessController.doPrivileged( |
|
92 new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.debug")) != null); |
|
93 String p = java.security.AccessController.doPrivileged( |
|
94 new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.disableJarChecking")); |
|
95 DISABLE_JAR_CHECKING = p != null ? p.equals("true") || p.equals("") : false; |
92 DISABLE_JAR_CHECKING = p != null ? p.equals("true") || p.equals("") : false; |
96 } |
93 } |
97 |
94 |
98 /* The original search path of URLs. */ |
95 /* The original search path of URLs. */ |
99 private ArrayList<URL> path = new ArrayList<>(); |
96 private ArrayList<URL> path = new ArrayList<>(); |