8049367: Modular Run-Time Images
authorchegar
Wed, 03 Dec 2014 14:22:17 +0000
changeset 27574 2e8afdf5c6fb
parent 27573 ca46b34ef33e
child 27575 f20b507032b5
8049367: Modular Run-Time Images Reviewed-by: chegar, dfuchs, ihse, joehw, mullan, psandoz, wetmore Contributed-by: alan.bateman@oracle.com, alex.buckley@oracle.com, bradford.wetmore@oracle.com, chris.hegarty@oracle.com, erik.joelsson@oracle.com, james.laskey@oracle.com, jonathan.gibbons@oracle.com, karen.kinnear@oracle.com, magnus.ihse.bursie@oracle.com, mandy.chung@oracle.com, mark.reinhold@oracle.com, paul.sandoz@oracle.com, sundararajan.athijegannathan@oracle.com
jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/ClassPath.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DatatypeFactoryImpl.java
jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java
jaxp/src/java.xml/share/classes/javax/xml/XMLConstants.java
jaxp/src/java.xml/share/classes/javax/xml/datatype/DatatypeFactory.java
jaxp/src/java.xml/share/classes/javax/xml/datatype/FactoryFinder.java
jaxp/src/java.xml/share/classes/javax/xml/parsers/DocumentBuilderFactory.java
jaxp/src/java.xml/share/classes/javax/xml/parsers/FactoryFinder.java
jaxp/src/java.xml/share/classes/javax/xml/parsers/SAXParserFactory.java
jaxp/src/java.xml/share/classes/javax/xml/stream/FactoryFinder.java
jaxp/src/java.xml/share/classes/javax/xml/transform/FactoryFinder.java
jaxp/src/java.xml/share/classes/javax/xml/transform/TransformerFactory.java
jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactory.java
jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactoryFinder.java
jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactory.java
jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactoryFinder.java
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/ClassPath.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/ClassPath.java	Wed Dec 03 14:22:17 2014 +0000
@@ -151,18 +151,17 @@
   }
 
   /** Checks for class path components in the following properties:
-   * "java.class.path", "sun.boot.class.path", "java.ext.dirs"
+   * "java.class.path", "sun.boot.class.path"
    *
    * @return class path as used by default by BCEL
    */
   public static final String getClassPath() {
 
-    String class_path, boot_path, ext_path;
+    String class_path, boot_path;
 
     try {
       class_path = SecuritySupport.getSystemProperty("java.class.path");
       boot_path  = SecuritySupport.getSystemProperty("sun.boot.class.path");
-      ext_path   = SecuritySupport.getSystemProperty("java.ext.dirs");
     }
     catch (SecurityException e) {
         return "";
@@ -173,23 +172,6 @@
     getPathComponents(class_path, list);
     getPathComponents(boot_path, list);
 
-    ArrayList dirs = new ArrayList();
-    getPathComponents(ext_path, dirs);
-
-    for(Iterator e = dirs.iterator(); e.hasNext(); ) {
-      File ext_dir = new File((String)e.next());
-      String[] extensions = SecuritySupport.getFileList(ext_dir, new FilenameFilter() {
-        public boolean accept(File dir, String name) {
-          name = name.toLowerCase();
-          return name.endsWith(".zip") || name.endsWith(".jar");
-        }
-      });
-
-      if(extensions != null)
-        for(int i=0; i < extensions.length; i++)
-          list.add(ext_path + File.separatorChar + extensions[i]);
-    }
-
     StringBuffer buf = new StringBuffer();
 
     for(Iterator e = list.iterator(); e.hasNext(); ) {
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java	Wed Dec 03 14:22:17 2014 +0000
@@ -243,6 +243,9 @@
             if (protocol.equalsIgnoreCase("jar")) {
                 String path = url.getPath();
                 protocol = path.substring(0, path.indexOf(":"));
+            } else if (protocol.equalsIgnoreCase("jrt")) {
+                // if the systemId is "jrt" then allow access if "file" allowed
+                protocol = "file";
             }
         }
 
@@ -278,7 +281,7 @@
 
     /**
      * Read JAXP system property in this order: system property,
-     * $java.home/lib/jaxp.properties if the system property is not specified
+     * $java.home/conf/jaxp.properties if the system property is not specified
      *
      * @param propertyId the Id of the property
      * @return the value of the property
@@ -292,7 +295,7 @@
     }
 
     /**
-     * Read from $java.home/lib/jaxp.properties for the specified property
+     * Read from $java.home/conf/jaxp.properties for the specified property
      * The program
      *
      * @param propertyId the Id of the property
@@ -306,7 +309,7 @@
                 synchronized (cacheProps) {
                     if (firstTime) {
                         String configFile = getSystemProperty("java.home") + File.separator +
-                            "lib" + File.separator + "jaxp.properties";
+                            "conf" + File.separator + "jaxp.properties";
                         File f = new File(configFile);
                         if (getFileExists(f)) {
                             is = getFileInputStream(f);
@@ -332,12 +335,12 @@
     }
 
     /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     static final Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if the program has tried reading java.home/lib/jaxp.properties
+     * Flag indicating if the program has tried reading java.home/conf/jaxp.properties
      */
     static volatile boolean firstTime = true;
 
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java	Wed Dec 03 14:22:17 2014 +0000
@@ -558,9 +558,6 @@
    * Logs java.class.path and other likely paths; then attempts
    * to search those paths for .jar files with Xalan-related classes.
    *
-   * //@todo NOTE: We don't actually search java.ext.dirs for
-   * //  *.jar files therein! This should be updated
-   *
    * @param h Hashtable to put information in
    * @see #jarNames
    * @see #checkPathForJars(String, String[])
@@ -615,20 +612,6 @@
           h.put(FOUNDCLASSES + "sun.boot.class.path", classpathJars);
       }
 
-      //@todo NOTE: We don't actually search java.ext.dirs for
-      //  *.jar files therein! This should be updated
-      othercp = SecuritySupport.getSystemProperty("java.ext.dirs");
-
-      if (null != othercp)
-      {
-        h.put("java.ext.dirs", othercp);
-
-        classpathJars = checkPathForJars(othercp, jarNames);
-
-        if (null != classpathJars)
-          h.put(FOUNDCLASSES + "java.ext.dirs", classpathJars);
-      }
-
       //@todo also check other System properties' paths?
       //  v2 = checkPathForJars(System.getProperty("sun.boot.library.path"), jarNames);   // ?? may not be needed
       //  v3 = checkPathForJars(System.getProperty("java.library.path"), jarNames);   // ?? may not be needed
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DatatypeFactoryImpl.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DatatypeFactoryImpl.java	Wed Dec 03 14:22:17 2014 +0000
@@ -41,7 +41,7 @@
  *      Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
  *    </li>
  *    <li>
- *      If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a {@link java.util.Properties} <code>Object</code>.
+ *      If the file ${JAVA_HOME}/conf/jaxp.properties exists, it is loaded in a {@link java.util.Properties} <code>Object</code>.
  *      The <code>Properties</code> <code>Object </code> is then queried for the property as documented in the prior step
  *      and processed as documented in the prior step.
  *    </li>
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java	Wed Dec 03 14:22:17 2014 +0000
@@ -237,6 +237,9 @@
             if (protocol.equalsIgnoreCase("jar")) {
                 String path = url.getPath();
                 protocol = path.substring(0, path.indexOf(":"));
+            } else if (protocol.equalsIgnoreCase("jrt")) {
+                // if the systemId is "jrt" then allow access if "file" allowed
+                protocol = "file";
             }
         }
 
@@ -272,7 +275,7 @@
 
     /**
      * Read JAXP system property in this order: system property,
-     * $java.home/lib/jaxp.properties if the system property is not specified
+     * $java.home/conf/jaxp.properties if the system property is not specified
      *
      * @param propertyId the Id of the property
      * @return the value of the property
@@ -286,7 +289,7 @@
     }
 
      /**
-     * Read from $java.home/lib/jaxp.properties for the specified property
+     * Read from $java.home/conf/jaxp.properties for the specified property
      * The program
      *
      * @param propertyId the Id of the property
@@ -300,7 +303,7 @@
                 synchronized (cacheProps) {
                     if (firstTime) {
                         String configFile = getSystemProperty("java.home") + File.separator +
-                            "lib" + File.separator + "jaxp.properties";
+                            "conf" + File.separator + "jaxp.properties";
                         File f = new File(configFile);
                         if (getFileExists(f)) {
                             is = getFileInputStream(f);
@@ -326,12 +329,12 @@
     }
 
    /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     static final Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if the program has tried reading java.home/lib/jaxp.properties
+     * Flag indicating if the program has tried reading java.home/conf/jaxp.properties
      */
     static volatile boolean firstTime = true;
 
--- a/jaxp/src/java.xml/share/classes/javax/xml/XMLConstants.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/XMLConstants.java	Wed Dec 03 14:22:17 2014 +0000
@@ -247,7 +247,7 @@
          * </p>
          *
          * <p>
-         * <b>${JAVA_HOME}/lib/jaxp.properties:</b> This configuration file is in standard
+         * <b>${JAVA_HOME}/conf/jaxp.properties:</b> This configuration file is in standard
          * {@link java.util.Properties} format. If the file exists and the system property is specified,
          * its value will be used to override the default of the property.
          * </p>
@@ -314,7 +314,7 @@
          * </p>
          *
          * <p>
-         * <b>${JAVA_HOME}/lib/jaxp.properties:</b> This configuration file is in standard
+         * <b>${JAVA_HOME}/conf/jaxp.properties:</b> This configuration file is in standard
          * java.util.Properties format. If the file exists and the system property is specified,
          * its value will be used to override the default of the property.
          *
@@ -380,7 +380,7 @@
          * </p>
          *
          * <p>
-         * <b>${JAVA_HOME}/lib/jaxp.properties: </b> This configuration file is in standard
+         * <b>${JAVA_HOME}/conf/jaxp.properties: </b> This configuration file is in standard
          * java.util.Properties format. If the file exists and the system property is specified,
          * its value will be used to override the default of the property.
          *
--- a/jaxp/src/java.xml/share/classes/javax/xml/datatype/DatatypeFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/datatype/DatatypeFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -43,7 +43,7 @@
  *      Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
  *    </li>
  *    <li>
- *      If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a {@link java.util.Properties} <code>Object</code>.
+ *      If the file ${JAVA_HOME}/conf/jaxp.properties exists, it is loaded in a {@link java.util.Properties} <code>Object</code>.
  *      The <code>Properties</code> <code>Object </code> is then queried for the property as documented in the prior step
  *      and processed as documented in the prior step.
  *    </li>
--- a/jaxp/src/java.xml/share/classes/javax/xml/datatype/FactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/datatype/FactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -50,12 +50,12 @@
     private static boolean debug = false;
 
     /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     private final static Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if properties from java.home/lib/jaxp.properties
+     * Flag indicating if properties from java.home/conf/jaxp.properties
      * have been cached.
      */
     private static volatile boolean firstTime = true;
@@ -237,13 +237,13 @@
             if (debug) se.printStackTrace();
         }
 
-        // try to read from $java.home/lib/jaxp.properties
+        // try to read from $java.home/conf/jaxp.properties
         try {
             if (firstTime) {
                 synchronized (cacheProps) {
                     if (firstTime) {
                         String configFile = ss.getSystemProperty("java.home") + File.separator +
-                            "lib" + File.separator + "jaxp.properties";
+                            "conf" + File.separator + "jaxp.properties";
                         File f = new File(configFile);
                         firstTime = false;
                         if (ss.doesFileExist(f)) {
@@ -256,7 +256,7 @@
             final String factoryClassName = cacheProps.getProperty(factoryId);
 
             if (factoryClassName != null) {
-                dPrint("found in $java.home/jaxp.properties, value=" + factoryClassName);
+                dPrint("found in ${java.home}/conf/jaxp.properties, value=" + factoryClassName);
                 return newInstance(type, factoryClassName, null, true);
             }
         }
--- a/jaxp/src/java.xml/share/classes/javax/xml/parsers/DocumentBuilderFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/parsers/DocumentBuilderFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -66,7 +66,7 @@
      * property.
      * </li>
      * <li>
-     * Use the properties file "lib/jaxp.properties" in the JRE directory.
+     * Use the properties file "conf/jaxp.properties" in the JRE directory.
      * This configuration file is in standard <code>java.util.Properties
      * </code> format and contains the fully qualified name of the
      * implementation class with the key being the system property defined
--- a/jaxp/src/java.xml/share/classes/javax/xml/parsers/FactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/parsers/FactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -50,12 +50,12 @@
     private static boolean debug = false;
 
     /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     private static final Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if properties from java.home/lib/jaxp.properties
+     * Flag indicating if properties from java.home/conf/jaxp.properties
      * have been cached.
      */
     static volatile boolean firstTime = true;
@@ -236,13 +236,13 @@
             if (debug) se.printStackTrace();
         }
 
-        // try to read from $java.home/lib/jaxp.properties
+        // try to read from $java.home/conf/jaxp.properties
         try {
             if (firstTime) {
                 synchronized (cacheProps) {
                     if (firstTime) {
                         String configFile = ss.getSystemProperty("java.home") + File.separator +
-                            "lib" + File.separator + "jaxp.properties";
+                            "conf" + File.separator + "jaxp.properties";
                         File f = new File(configFile);
                         firstTime = false;
                         if (ss.doesFileExist(f)) {
@@ -255,7 +255,7 @@
             final String factoryClassName = cacheProps.getProperty(factoryId);
 
             if (factoryClassName != null) {
-                dPrint("found in $java.home/jaxp.properties, value=" + factoryClassName);
+                dPrint("found in ${java.home}/conf/jaxp.properties, value=" + factoryClassName);
                 return newInstance(type, factoryClassName, null, true);
             }
         }
--- a/jaxp/src/java.xml/share/classes/javax/xml/parsers/SAXParserFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/parsers/SAXParserFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -70,7 +70,7 @@
      * property.
      * </li>
      * <li>
-     * Use the properties file "lib/jaxp.properties" in the JRE directory.
+     * Use the properties file "conf/jaxp.properties" in the JRE directory.
      * This configuration file is in standard <code>java.util.Properties
      * </code> format and contains the fully qualified name of the
      * implementation class with the key being the system property defined
--- a/jaxp/src/java.xml/share/classes/javax/xml/stream/FactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/stream/FactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -51,12 +51,12 @@
     private static boolean debug = false;
 
     /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     final private static Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if properties from java.home/lib/jaxp.properties
+     * Flag indicating if properties from java.home/conf/jaxp.properties
      * have been cached.
      */
     private static volatile boolean firstTime = true;
@@ -271,7 +271,7 @@
         }
 
         // Try read $java.home/lib/stax.properties followed by
-        // $java.home/lib/jaxp.properties if former not present
+        // $java.home/conf/jaxp.properties if former not present
         String configFile = null;
         try {
             if (firstTime) {
@@ -287,7 +287,7 @@
                         }
                         else {
                             configFile = ss.getSystemProperty("java.home") + File.separator +
-                                "lib" + File.separator + "jaxp.properties";
+                                "conf" + File.separator + "jaxp.properties";
                             f = new File(configFile);
                             if (ss.doesFileExist(f)) {
                                 dPrint("Read properties file "+f);
--- a/jaxp/src/java.xml/share/classes/javax/xml/transform/FactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/transform/FactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -53,12 +53,12 @@
     private static boolean debug = false;
 
     /**
-     * Cache for properties in java.home/lib/jaxp.properties
+     * Cache for properties in java.home/conf/jaxp.properties
      */
     private final static Properties cacheProps = new Properties();
 
     /**
-     * Flag indicating if properties from java.home/lib/jaxp.properties
+     * Flag indicating if properties from java.home/conf/jaxp.properties
      * have been cached.
      */
     static volatile boolean firstTime = true;
@@ -268,13 +268,13 @@
             if (debug) se.printStackTrace();
         }
 
-        // try to read from $java.home/lib/jaxp.properties
+        // try to read from $java.home/conf/jaxp.properties
         try {
             if (firstTime) {
                 synchronized (cacheProps) {
                     if (firstTime) {
                         String configFile = ss.getSystemProperty("java.home") + File.separator +
-                            "lib" + File.separator + "jaxp.properties";
+                            "conf" + File.separator + "jaxp.properties";
                         File f = new File(configFile);
                         firstTime = false;
                         if (ss.doesFileExist(f)) {
@@ -287,7 +287,7 @@
             final String factoryClassName = cacheProps.getProperty(factoryId);
 
             if (factoryClassName != null) {
-                dPrint("found in $java.home/jaxp.properties, value=" + factoryClassName);
+                dPrint("found in ${java.home}/conf/jaxp.properties, value=" + factoryClassName);
                 return newInstance(type, factoryClassName, null, true, true);
             }
         }
--- a/jaxp/src/java.xml/share/classes/javax/xml/transform/TransformerFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/transform/TransformerFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -62,7 +62,7 @@
      * property.
      * </li>
      * <li>
-     * Use the properties file "lib/jaxp.properties" in the JRE directory.
+     * Use the properties file "conf/jaxp.properties" in the JRE directory.
      * This configuration file is in standard <code>java.util.Properties
      * </code> format and contains the fully qualified name of the
      * implementation class with the key being the system property defined
--- a/jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -141,7 +141,7 @@
      *     and returns it if it is successfully created.
      *   </li>
      *   <li>
-     *     <code>$java.home/lib/jaxp.properties</code> is read and
+     *     <code>$java.home/conf/jaxp.properties</code> is read and
      *     the value associated with the key being the system property above
      *     is looked for. If present, the value is processed just like above.
      *   </li>
--- a/jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/validation/SchemaFactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -181,10 +181,10 @@
 
         String javah = ss.getSystemProperty( "java.home" );
         String configFile = javah + File.separator +
-        "lib" + File.separator + "jaxp.properties";
+        "conf" + File.separator + "jaxp.properties";
 
 
-        // try to read from $java.home/lib/jaxp.properties
+        // try to read from $java.home/conf/jaxp.properties
         try {
             if(firstTime){
                 synchronized(cacheProps){
@@ -199,7 +199,7 @@
                 }
             }
             final String factoryClassName = cacheProps.getProperty(propertyName);
-            debugPrintln("found " + factoryClassName + " in $java.home/jaxp.properties");
+            debugPrintln("found " + factoryClassName + " in $java.home/conf/jaxp.properties");
 
             if (factoryClassName != null) {
                 sf = createInstance(factoryClassName, true);
--- a/jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactory.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactory.java	Wed Dec 03 14:22:17 2014 +0000
@@ -117,7 +117,7 @@
     *     and returns it if it is successfully created.
     *   </li>
     *   <li>
-    *     ${java.home}/lib/jaxp.properties is read and the value associated with the key being the system property above is looked for.
+    *     ${java.home}/conf/jaxp.properties is read and the value associated with the key being the system property above is looked for.
     *     If present, the value is processed just like above.
     *   </li>
     *   <li>
--- a/jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactoryFinder.java	Tue Nov 18 15:25:15 2014 -0800
+++ b/jaxp/src/java.xml/share/classes/javax/xml/xpath/XPathFactoryFinder.java	Wed Dec 03 14:22:17 2014 +0000
@@ -176,9 +176,9 @@
 
         String javah = ss.getSystemProperty( "java.home" );
         String configFile = javah + File.separator +
-        "lib" + File.separator + "jaxp.properties";
+        "conf" + File.separator + "jaxp.properties";
 
-        // try to read from $java.home/lib/jaxp.properties
+        // try to read from $java.home/conf/jaxp.properties
         try {
             if(firstTime){
                 synchronized(cacheProps){
@@ -193,7 +193,7 @@
                 }
             }
             final String factoryClassName = cacheProps.getProperty(propertyName);
-            debugPrintln("found " + factoryClassName + " in $java.home/jaxp.properties");
+            debugPrintln("found " + factoryClassName + " in $java.home/conf/jaxp.properties");
 
             if (factoryClassName != null) {
                 xpathFactory = createInstance(factoryClassName, true);