You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2018/02/23 22:59:25 UTC

svn commit: r1825179 - in /felix/trunk/osgi-r7/framework/src/main: java/org/apache/felix/framework/ java/org/apache/felix/framework/util/ java/org/apache/felix/framework/util/manifestparser/ resources/

Author: pauls
Date: Fri Feb 23 22:59:25 2018
New Revision: 1825179

URL: http://svn.apache.org/viewvc?rev=1825179&view=rev
Log:
FELIX-5792: Add basic support for java.* exports and imports and remove old, unsupported jdk profiles.

Modified:
    felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/Felix.java
    felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/Util.java
    felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
    felix/trunk/osgi-r7/framework/src/main/resources/default.properties

Modified: felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=1825179&r1=1825178&r2=1825179&view=diff
==============================================================================
--- felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/Felix.java Fri Feb 23 22:59:25 2018
@@ -4639,6 +4639,8 @@ public class Felix extends BundleImpl im
         // if not explicitly configured.
         loadFromDefaultIfNotDefined(defaultProperties, Constants.FRAMEWORK_EXECUTIONENVIRONMENT);
 
+        loadFromDefaultIfNotDefined(defaultProperties, Constants.FRAMEWORK_SYSTEMPACKAGES);
+
         // Set supported native capabilities to default value,
         // if not explicitly configured.
         loadPrefixFromDefaultIfNotDefined(m_configMutableMap, defaultProperties, FelixConstants.NATIVE_OS_NAME_ALIAS_PREFIX);

Modified: felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/Util.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/Util.java?rev=1825179&r1=1825178&r2=1825179&view=diff
==============================================================================
--- felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/Util.java (original)
+++ felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/Util.java Fri Feb 23 22:59:25 2018
@@ -35,6 +35,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.felix.framework.Felix;
@@ -108,14 +109,32 @@ public class Util
                 moduleLayer = c_ModuleLayer.getMethod("boot").invoke(null);
             }
 
+            Set<String> javaExports = new TreeSet<String>();
             for (Object module : ((Iterable) c_ModuleLayer.getMethod("modules").invoke(moduleLayer)))
             {
                 if ((Boolean) m_canRead.invoke(self, module))
                 {
                     Object name = m_getName.invoke(module);
                     properties.put("felix.detect.jpms." + name, name);
+                    for (String export : (Iterable<String>) c_Module.getMethod("getPackages").invoke(module))
+                    {
+                        if (export.startsWith("java.") && (Boolean) c_Module.getMethod("isExported", String.class, c_Module).invoke(module, export, self))
+                        {
+                            javaExports.add(export);
+                        }
+                    }
                 }
             }
+
+            if (!javaExports.isEmpty())
+            {
+                StringBuilder builder = new StringBuilder();
+                for (String export : javaExports) {
+                    builder.append(',').append(export);
+                }
+                properties.put("felix.detect.jpms.java", builder.toString());
+            }
+
             properties.put("felix.detect.jpms", "jpms");
         }
         catch (Exception ex)

Modified: felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java?rev=1825179&r1=1825178&r2=1825179&view=diff
==============================================================================
--- felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java (original)
+++ felix/trunk/osgi-r7/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java Fri Feb 23 22:59:25 2018
@@ -338,22 +338,17 @@ public class ManifestParser
                     VersionRange.parse(v.toString()));
             }
 
-            // Verify java.* is not imported, nor any duplicate imports.
+            // Verify no duplicate imports.
             for (String pkgName : clause.m_paths)
             {
                 if (!dupeSet.contains(pkgName))
                 {
-                    // Verify that java.* packages are not imported.
-                    if (pkgName.startsWith("java."))
-                    {
-                        throw new BundleException(
-                            "Importing java.* packages not allowed: " + pkgName);
-                    }
+
                     // The character "." has no meaning in the OSGi spec except
                     // when placed on the bundle class path. Some people, however,
                     // mistakenly think it means the default package when imported
                     // or exported. This is not correct. It is invalid.
-                    else if (pkgName.equals("."))
+                    if (pkgName.equals("."))
                     {
                         throw new BundleException("Imporing '.' is invalid.");
                     }
@@ -531,16 +526,10 @@ public class ManifestParser
                     VersionRange.parse(v.toString()));
             }
 
-            // Dynamic imports can have duplicates, so verify that java.*
-            // packages are not imported.
+            // Dynamic imports can have duplicates, verify that no partial package name wild carding is used
             for (String pkgName : clause.m_paths)
             {
-                if (pkgName.startsWith("java."))
-                {
-                    throw new BundleException(
-                        "Dynamically importing java.* packages not allowed: " + pkgName);
-                }
-                else if (!pkgName.equals("*") && pkgName.endsWith("*") && !pkgName.endsWith(".*"))
+                if (!pkgName.equals("*") && pkgName.endsWith("*") && !pkgName.endsWith(".*"))
                 {
                     throw new BundleException(
                         "Partial package name wild carding is not allowed: " + pkgName);
@@ -849,18 +838,17 @@ public class ManifestParser
         String mv, String bsn, Version bv)
         throws BundleException
     {
-        // Verify that "java.*" packages are not exported.
         for (ParsedHeaderClause clause : clauses)
         {
             // Verify that the named package has not already been declared.
             for (String pkgName : clause.m_paths)
             {
-                // Verify that java.* packages are not exported.
-                if (pkgName.startsWith("java."))
+                // Verify that java.* packages are not exported (except from the system bundle).
+                if (!FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(bsn) && pkgName.startsWith("java."))
                 {
                     throw new BundleException(
                         "Exporting java.* packages not allowed: "
-                        + pkgName);
+                        + pkgName, BundleException.MANIFEST_ERROR);
                 }
                 // The character "." has no meaning in the OSGi spec except
                 // when placed on the bundle class path. Some people, however,

Modified: felix/trunk/osgi-r7/framework/src/main/resources/default.properties
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/framework/src/main/resources/default.properties?rev=1825179&r1=1825178&r2=1825179&view=diff
==============================================================================
--- felix/trunk/osgi-r7/framework/src/main/resources/default.properties (original)
+++ felix/trunk/osgi-r7/framework/src/main/resources/default.properties Fri Feb 23 22:59:25 2018
@@ -148,260 +148,79 @@ org.osgi.framework.system.packages=\
 #
 # Java platform package export properties.
 #
-jre-1.3=, \
- javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_003_J2SE", \
- javax.naming.directory;uses:="javax.naming";version="0.0.0.1_003_J2SE", \
- javax.naming.event;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_003_J2SE", \
- javax.naming.ldap;uses:="javax.naming,javax.naming.directory,javax.naming.event";version="0.0.0.1_003_J2SE", \
- javax.naming.spi;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_003_J2SE", \
- javax.naming;uses:="javax.naming.spi";version="0.0.0.1_003_J2SE", \
- javax.rmi.CORBA;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable,org.omg.CORBA.portable,org.omg.SendingContext";version="0.0.0.1_003_J2SE", \
- javax.rmi;uses:="org.omg.CORBA,javax.rmi.CORBA";version="0.0.0.1_003_J2SE", \
- javax.sound.midi.spi;uses:="javax.sound.midi";version="0.0.0.1_003_J2SE", \
- javax.sound.midi;uses:="javax.sound.midi.spi";version="0.0.0.1_003_J2SE", \
- javax.sound.sampled.spi;uses:="javax.sound.sampled";version="0.0.0.1_003_J2SE", \
- javax.sound.sampled;uses:="javax.sound.sampled.spi";version="0.0.0.1_003_J2SE", \
- javax.swing.border;uses:="javax.swing";version="0.0.0.1_003_J2SE", \
- javax.swing.colorchooser;uses:="javax.swing.event,javax.swing,javax.swing.text,javax.swing.border,javax.accessibility";version="0.0.0.1_003_J2SE", \
- javax.swing.event;uses:="javax.swing,javax.swing.text,javax.swing.table,javax.swing.tree,javax.swing.undo";version="0.0.0.1_003_J2SE", \
- javax.swing.filechooser;uses:="javax.swing";version="0.0.0.1_003_J2SE", \
- javax.swing.plaf.basic;uses:="javax.swing,javax.swing.border,javax.swing.plaf,javax.swing.text,javax.swing.event,javax.swing.colorchooser,javax.accessibility,javax.swing.filechooser,javax.swing.text.html,javax.swing.table,javax.swing.tree";version="0.0.0.1_003_J2SE", \
- javax.swing.plaf.metal;uses:="javax.swing.plaf,javax.swing.border,javax.swing,javax.swing.text,javax.swing.plaf.basic,javax.swing.event,javax.swing.filechooser,javax.accessibility,javax.swing.tree";version="0.0.0.1_003_J2SE", \
- javax.swing.plaf.multi;uses:="javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_003_J2SE", \
- javax.swing.plaf;uses:="javax.swing,javax.swing.border,javax.accessibility,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_003_J2SE", \
- javax.swing.table;uses:="javax.swing.event,javax.swing.plaf,javax.swing.border,javax.swing,javax.accessibility";version="0.0.0.1_003_J2SE", \
- javax.swing.text.html.parser;uses:="javax.swing.text.html,javax.swing.text";version="0.0.0.1_003_J2SE", \
- javax.swing.text.html;uses:="javax.swing.text,javax.swing,javax.swing.event,javax.swing.border,javax.swing.undo,javax.swing.plaf,javax.swing.text.html.parser";version="0.0.0.1_003_J2SE", \
- javax.swing.text.rtf;uses:="javax.swing.text";version="0.0.0.1_003_J2SE", \
- javax.swing.text;uses:="javax.swing.event,javax.swing.tree,javax.swing.undo,javax.swing,javax.swing.plaf,javax.swing.plaf.basic,javax.accessibility,javax.swing.text.html";version="0.0.0.1_003_J2SE", \
- javax.swing.tree;uses:="javax.swing.event,javax.swing,javax.swing.border,javax.swing.plaf";version="0.0.0.1_003_J2SE", \
- javax.swing.undo;uses:="javax.swing,javax.swing.event";version="0.0.0.1_003_J2SE", \
- javax.swing;uses:="javax.swing.event,javax.swing.text,javax.accessibility,javax.swing.plaf,javax.swing.border,javax.swing.tree,javax.swing.table,javax.swing.colorchooser,javax.swing.plaf.basic,javax.swing.text.html,javax.swing.filechooser";version="0.0.0.1_003_J2SE", \
- javax.transaction;version="0.0.0.1_003_J2SE", \
- org.omg.CORBA.DynAnyPackage;uses:="org.omg.CORBA";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA.ORBPackage;uses:="org.omg.CORBA";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA.TypeCodePackage;uses:="org.omg.CORBA";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA.portable;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA;uses:="org.omg.CORBA.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA_2_3.portable,org.omg.CORBA.TypeCodePackage";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA_2_3.portable;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_003_J2SE", \
- org.omg.CORBA_2_3;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_003_J2SE", \
- org.omg.CosNaming.NamingContextPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.CosNaming";version="0.0.0.1_003_J2SE", \
- org.omg.CosNaming;uses:="org.omg.CORBA.portable,org.omg.CORBA,org.omg.CosNaming.NamingContextPackage";version="0.0.0.1_003_J2SE", \
- org.omg.SendingContext;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_003_J2SE", \
- org.omg.stub.java.rmi;uses:="javax.rmi.CORBA";version="0.0.0.1_003_J2SE"
+jre-1.6-java-base=, \
+ java.applet, \
+ java.awt, \
+ java.awt.color, \
+ java.awt.datatransfer, \
+ java.awt.dnd, \
+ java.awt.event, \
+ java.awt.font, \
+ java.awt.geom, \
+ java.awt.im, \
+ java.awt.im.spi, \
+ java.awt.image, \
+ java.awt.image.renderable, \
+ java.awt.print, \
+ java.beans, \
+ java.beans.beancontext, \
+ java.io, \
+ java.lang, \
+ java.lang.annotation, \
+ java.lang.instrument, \
+ java.lang.management, \
+ java.lang.ref, \
+ java.lang.reflect, \
+ java.math, \
+ java.net, \
+ java.nio, \
+ java.nio.channels, \
+ java.nio.channels.spi, \
+ java.nio.charset, \
+ java.nio.charset.spi, \
+ java.rmi, \
+ java.rmi.activation, \
+ java.rmi.dgc, \
+ java.rmi.registry, \
+ java.rmi.server, \
+ java.security, \
+ java.security.acl, \
+ java.security.cert, \
+ java.security.interfaces, \
+ java.security.spec, \
+ java.sql, \
+ java.text, \
+ java.text.spi, \
+ java.util, \
+ java.util.concurrent, \
+ java.util.concurrent.atomic, \
+ java.util.concurrent.locks, \
+ java.util.jar, \
+ java.util.logging, \
+ java.util.prefs, \
+ java.util.regex, \
+ java.util.spi, \
+ java.util.zip
 
-jre-1.4=, \
- javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_004_J2SE", \
- javax.crypto.interfaces;uses:="javax.crypto.spec,javax.crypto";version="0.0.0.1_004_J2SE", \
- javax.crypto.spec;uses:="javax.crypto";version="0.0.0.1_004_J2SE", \
- javax.crypto;uses:="javax.crypto.spec";version="0.0.0.1_004_J2SE", \
- javax.imageio.event;uses:="javax.imageio";version="0.0.0.1_004_J2SE", \
- javax.imageio.metadata;uses:="org.w3c.dom,javax.imageio,org.apache.crimson.util";version="0.0.0.1_004_J2SE", \
- javax.imageio.plugins.jpeg;uses:="javax.imageio";version="0.0.0.1_004_J2SE", \
- javax.imageio.spi;uses:="javax.imageio.stream,javax.imageio,javax.imageio.metadata";version="0.0.0.1_004_J2SE", \
- javax.imageio.stream;uses:="javax.imageio";version="0.0.0.1_004_J2SE", \
- javax.imageio;uses:="javax.imageio.metadata,javax.imageio.stream,javax.imageio.spi,javax.imageio.event";version="0.0.0.1_004_J2SE", \
- javax.naming.directory;uses:="javax.naming";version="0.0.0.1_004_J2SE", \
- javax.naming.event;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_004_J2SE", \
- javax.naming.ldap;uses:="javax.naming,javax.naming.directory,javax.net.ssl,javax.naming.event";version="0.0.0.1_004_J2SE", \
- javax.naming.spi;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_004_J2SE", \
- javax.naming;uses:="javax.naming.spi";version="0.0.0.1_004_J2SE", \
- javax.net.ssl;uses:="javax.security.cert,javax.net";version="0.0.0.1_004_J2SE", \
- javax.net;version="0.0.0.1_004_J2SE", \
- javax.print.attribute.standard;uses:="javax.print.attribute";version="0.0.0.1_004_J2SE", \
- javax.print.attribute;version="0.0.0.1_004_J2SE", \
- javax.print.event;uses:="javax.print,javax.print.attribute";version="0.0.0.1_004_J2SE", \
- javax.print;uses:="javax.print.attribute,javax.print.event,javax.print.attribute.standard";version="0.0.0.1_004_J2SE", \
- javax.rmi.CORBA;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable,org.omg.CORBA.portable,org.omg.SendingContext";version="0.0.0.1_004_J2SE", \
- javax.rmi;uses:="org.omg.CORBA,javax.rmi.CORBA";version="0.0.0.1_004_J2SE", \
- javax.security.auth.callback;version="0.0.0.1_004_J2SE", \
- javax.security.auth.kerberos;uses:="javax.security.auth,javax.crypto";version="0.0.0.1_004_J2SE", \
- javax.security.auth.login;uses:="javax.security.auth,javax.security.auth.callback";version="0.0.0.1_004_J2SE", \
- javax.security.auth.spi;uses:="javax.security.auth.callback,javax.security.auth.login,javax.security.auth";version="0.0.0.1_004_J2SE", \
- javax.security.auth.x500;uses:="javax.security.auth";version="0.0.0.1_004_J2SE", \
- javax.security.auth;version="0.0.0.1_004_J2SE", \
- javax.security.cert;version="0.0.0.1_004_J2SE", \
- javax.sound.midi.spi;uses:="javax.sound.midi";version="0.0.0.1_004_J2SE", \
- javax.sound.midi;uses:="javax.sound.midi.spi";version="0.0.0.1_004_J2SE", \
- javax.sound.sampled.spi;uses:="javax.sound.sampled";version="0.0.0.1_004_J2SE", \
- javax.sound.sampled;uses:="javax.sound.sampled.spi";version="0.0.0.1_004_J2SE", \
- javax.sql;uses:="javax.transaction.xa";version="0.0.0.1_004_J2SE", \
- javax.swing.border;uses:="javax.swing";version="0.0.0.1_004_J2SE", \
- javax.swing.colorchooser;uses:="javax.swing.event,javax.swing,javax.swing.border,javax.accessibility";version="0.0.0.1_004_J2SE", \
- javax.swing.event;uses:="javax.swing,javax.swing.text,javax.swing.table,javax.swing.tree,javax.swing.undo";version="0.0.0.1_004_J2SE", \
- javax.swing.filechooser;uses:="javax.swing";version="0.0.0.1_004_J2SE", \
- javax.swing.plaf.basic;uses:="javax.swing.border,javax.swing,javax.swing.plaf,javax.swing.text,javax.swing.event,javax.swing.colorchooser,javax.accessibility,javax.swing.filechooser,javax.swing.text.html,javax.sound.sampled,javax.swing.table,javax.swing.tree";version="0.0.0.1_004_J2SE", \
- javax.swing.plaf.metal;uses:="javax.swing.plaf,javax.swing,javax.swing.border,javax.swing.text,javax.swing.plaf.basic,javax.swing.filechooser,javax.swing.event,javax.swing.table,javax.accessibility,javax.swing.tree";version="0.0.0.1_004_J2SE", \
- javax.swing.plaf.multi;uses:="javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_004_J2SE", \
- javax.swing.plaf;uses:="javax.swing,javax.swing.border,javax.accessibility,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_004_J2SE", \
- javax.swing.table;uses:="javax.swing.event,javax.swing.plaf,javax.swing.border,javax.swing,javax.accessibility";version="0.0.0.1_004_J2SE", \
- javax.swing.text.html.parser;uses:="javax.swing.text,javax.swing.text.html";version="0.0.0.1_004_J2SE", \
- javax.swing.text.html;uses:="javax.swing.event,javax.swing.text,javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.border,javax.swing.undo,javax.swing.text.html.parser";version="0.0.0.1_004_J2SE", \
- javax.swing.text.rtf;uses:="javax.swing.text";version="0.0.0.1_004_J2SE", \
- javax.swing.text;uses:="javax.swing.event,javax.swing.tree,javax.swing.undo,javax.swing,javax.swing.plaf,javax.swing.plaf.basic,javax.accessibility,javax.swing.text.html";version="0.0.0.1_004_J2SE", \
- javax.swing.tree;uses:="javax.swing.event,javax.swing,javax.swing.border,javax.swing.plaf";version="0.0.0.1_004_J2SE", \
- javax.swing.undo;uses:="javax.swing,javax.swing.event";version="0.0.0.1_004_J2SE", \
- javax.swing;uses:="javax.swing.event,javax.accessibility,javax.swing.text,javax.swing.plaf,javax.swing.border,javax.swing.tree,javax.swing.table,javax.swing.colorchooser,javax.swing.plaf.basic,javax.swing.text.html,javax.swing.filechooser";version="0.0.0.1_004_J2SE", \
- javax.transaction.xa;version="0.0.0.1_004_J2SE", \
- javax.transaction;version="0.0.0.1_004_J2SE", \
- javax.xml.parsers;uses:="org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="0.0.0.1_004_J2SE", \
- javax.xml.transform.dom;uses:="javax.xml.transform,org.w3c.dom";version="0.0.0.1_004_J2SE", \
- javax.xml.transform.sax;uses:="org.xml.sax.ext,javax.xml.transform,org.xml.sax,javax.xml.transform.stream";version="0.0.0.1_004_J2SE", \
- javax.xml.transform.stream;uses:="javax.xml.transform";version="0.0.0.1_004_J2SE", \
- javax.xml.transform;version="0.0.0.1_004_J2SE", \
- org.ietf.jgss;version="0.0.0.1_004_J2SE", \
- org.omg.CORBA.DynAnyPackage;uses:="org.omg.CORBA";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA.ORBPackage;uses:="org.omg.CORBA";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA.TypeCodePackage;uses:="org.omg.CORBA";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA.portable;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA;uses:="org.omg.CORBA.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA_2_3.portable,org.omg.CORBA.TypeCodePackage";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA_2_3.portable;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.CORBA_2_3;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.CosNaming.NamingContextExtPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.CosNaming.NamingContextPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.CosNaming";version="0.0.0.1_004_J2SE", \
- org.omg.CosNaming;uses:="org.omg.CORBA.portable,org.omg.CORBA,org.omg.PortableServer,org.omg.CosNaming.NamingContextPackage,org.omg.CosNaming.NamingContextExtPackage";version="0.0.0.1_004_J2SE", \
- org.omg.Dynamic;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.DynamicAny.DynAnyFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.DynamicAny.DynAnyPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.DynamicAny;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage";version="0.0.0.1_004_J2SE", \
- org.omg.IOP.CodecFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.IOP.CodecPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.IOP;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage";version="0.0.0.1_004_J2SE", \
- org.omg.Messaging;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableInterceptor.ORBInitInfoPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableInterceptor;uses:="org.omg.CORBA.portable,org.omg.CORBA,org.omg.IOP,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.Dynamic";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer.CurrentPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer.POAManagerPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer.POAPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer.ServantLocatorPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer.portable;uses:="org.omg.CORBA,org.omg.PortableServer";version="0.0.0.1_004_J2SE", \
- org.omg.PortableServer;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.CORBA_2_3,org.omg.PortableServer.ServantLocatorPackage";version="0.0.0.1_004_J2SE", \
- org.omg.SendingContext;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_004_J2SE", \
- org.omg.stub.java.rmi;uses:="javax.rmi.CORBA";version="0.0.0.1_004_J2SE", \
- org.w3c.dom;version="0.0.0.1_004_J2SE", \
- org.xml.sax.ext;uses:="org.xml.sax";version="0.0.0.1_004_J2SE", \
- org.xml.sax.helpers;uses:="org.xml.sax";version="0.0.0.1_004_J2SE", \
- org.xml.sax;version="0.0.0.1_004_J2SE"
+jre-1.7-java-base= \
+ ${dollar}{jre-1.6-java-base}, \
+ java.lang.invoke, \
+ java.nio.file, \
+ java.nio.file.attribute, \
+ java.nio.file.spi
 
-jre-1.5=, \
- javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_005_J2SE", \
- javax.activity;version="0.0.0.1_005_J2SE", \
- javax.crypto.interfaces;uses:="javax.crypto.spec,javax.crypto";version="0.0.0.1_005_J2SE", \
- javax.crypto.spec;uses:="javax.crypto";version="0.0.0.1_005_J2SE", \
- javax.crypto;uses:="javax.crypto.spec";version="0.0.0.1_005_J2SE", \
- javax.imageio.event;uses:="javax.imageio";version="0.0.0.1_005_J2SE", \
- javax.imageio.metadata;uses:="org.w3c.dom,javax.imageio";version="0.0.0.1_005_J2SE", \
- javax.imageio.plugins.bmp;uses:="javax.imageio";version="0.0.0.1_005_J2SE", \
- javax.imageio.plugins.jpeg;uses:="javax.imageio";version="0.0.0.1_005_J2SE", \
- javax.imageio.spi;uses:="javax.imageio.stream,javax.imageio,javax.imageio.metadata";version="0.0.0.1_005_J2SE", \
- javax.imageio.stream;uses:="javax.imageio";version="0.0.0.1_005_J2SE", \
- javax.imageio;uses:="javax.imageio.metadata,javax.imageio.stream,javax.imageio.spi,javax.imageio.event";version="0.0.0.1_005_J2SE", \
- javax.management.loading;uses:="javax.management";version="0.0.0.1_005_J2SE", \
- javax.management.modelmbean;uses:="javax.management,javax.management.loading";version="0.0.0.1_005_J2SE", \
- javax.management.monitor;uses:="javax.management";version="0.0.0.1_005_J2SE", \
- javax.management.openmbean;uses:="javax.management";version="0.0.0.1_005_J2SE", \
- javax.management.relation;uses:="javax.management";version="0.0.0.1_005_J2SE", \
- javax.management.remote.rmi;uses:="javax.management.remote,javax.security.auth,javax.management,javax.naming,org.omg.CORBA,org.omg.CORBA.portable,javax.rmi,javax.rmi.CORBA";version="0.0.0.1_005_J2SE", \
- javax.management.remote;uses:="javax.security.auth,javax.management";version="0.0.0.1_005_J2SE", \
- javax.management.timer;uses:="javax.management";version="0.0.0.1_005_J2SE", \
- javax.management;uses:="javax.management.loading";version="0.0.0.1_005_J2SE", \
- javax.naming.directory;uses:="javax.naming";version="0.0.0.1_005_J2SE", \
- javax.naming.event;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_005_J2SE", \
- javax.naming.ldap;uses:="javax.naming,javax.naming.directory,javax.net.ssl,javax.naming.event";version="0.0.0.1_005_J2SE", \
- javax.naming.spi;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_005_J2SE", \
- javax.naming;uses:="javax.naming.spi";version="0.0.0.1_005_J2SE", \
- javax.net.ssl;uses:="javax.security.cert,javax.security.auth.x500,javax.net";version="0.0.0.1_005_J2SE", \
- javax.net;version="0.0.0.1_005_J2SE", \
- javax.print.attribute.standard;uses:="javax.print.attribute";version="0.0.0.1_005_J2SE", \
- javax.print.attribute;version="0.0.0.1_005_J2SE", \
- javax.print.event;uses:="javax.print,javax.print.attribute";version="0.0.0.1_005_J2SE", \
- javax.print;uses:="javax.print.attribute,javax.print.event,javax.print.attribute.standard";version="0.0.0.1_005_J2SE", \
- javax.rmi.CORBA;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable,org.omg.CORBA.portable,org.omg.SendingContext";version="0.0.0.1_005_J2SE", \
- javax.rmi.ssl;uses:="javax.net,javax.net.ssl";version="0.0.0.1_005_J2SE", \
- javax.rmi;uses:="org.omg.CORBA,javax.rmi.CORBA";version="0.0.0.1_005_J2SE", \
- javax.security.auth.callback;version="0.0.0.1_005_J2SE", \
- javax.security.auth.kerberos;uses:="javax.security.auth,javax.crypto";version="0.0.0.1_005_J2SE", \
- javax.security.auth.login;uses:="javax.security.auth,javax.security.auth.callback";version="0.0.0.1_005_J2SE", \
- javax.security.auth.spi;uses:="javax.security.auth.callback,javax.security.auth.login,javax.security.auth";version="0.0.0.1_005_J2SE", \
- javax.security.auth.x500;uses:="javax.security.auth";version="0.0.0.1_005_J2SE", \
- javax.security.auth;version="0.0.0.1_005_J2SE", \
- javax.security.cert;version="0.0.0.1_005_J2SE", \
- javax.security.sasl;uses:="javax.security.auth.callback";version="0.0.0.1_005_J2SE", \
- javax.sound.midi.spi;uses:="javax.sound.midi";version="0.0.0.1_005_J2SE", \
- javax.sound.midi;uses:="javax.sound.midi.spi";version="0.0.0.1_005_J2SE", \
- javax.sound.sampled.spi;uses:="javax.sound.sampled";version="0.0.0.1_005_J2SE", \
- javax.sound.sampled;uses:="javax.sound.sampled.spi";version="0.0.0.1_005_J2SE", \
- javax.sql.rowset.serial;uses:="javax.sql.rowset";version="0.0.0.1_005_J2SE", \
- javax.sql.rowset.spi;uses:="javax.sql,javax.naming,javax.sql.rowset";version="0.0.0.1_005_J2SE", \
- javax.sql.rowset;uses:="javax.sql,javax.sql.rowset.serial,javax.sql.rowset.spi";version="0.0.0.1_005_J2SE", \
- javax.sql;uses:="javax.transaction.xa";version="0.0.0.1_005_J2SE", \
- javax.swing.border;uses:="javax.swing";version="0.0.0.1_005_J2SE", \
- javax.swing.colorchooser;uses:="javax.swing.event,javax.swing,javax.swing.border";version="0.0.0.1_005_J2SE", \
- javax.swing.event;uses:="javax.swing,javax.swing.text,javax.swing.table,javax.swing.tree,javax.swing.undo";version="0.0.0.1_005_J2SE", \
- javax.swing.filechooser;uses:="javax.swing";version="0.0.0.1_005_J2SE", \
- javax.swing.plaf.basic;uses:="javax.swing.border,javax.swing,javax.swing.plaf,javax.swing.text,javax.swing.event,javax.swing.colorchooser,javax.accessibility,javax.swing.filechooser,javax.swing.text.html,javax.sound.sampled,javax.swing.table,javax.swing.tree";version="0.0.0.1_005_J2SE", \
- javax.swing.plaf.metal;uses:="javax.swing.plaf,javax.swing,javax.swing.border,javax.swing.text,javax.swing.plaf.basic,javax.swing.filechooser,javax.swing.event,javax.accessibility,javax.swing.tree";version="0.0.0.1_005_J2SE", \
- javax.swing.plaf.multi;uses:="javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_005_J2SE", \
- javax.swing.plaf.synth;uses:="javax.swing,javax.swing.plaf,javax.swing.border,javax.swing.plaf.basic,javax.swing.colorchooser,javax.swing.text,javax.xml.parsers,org.xml.sax,javax.swing.table,javax.swing.tree";version="0.0.0.1_005_J2SE", \
- javax.swing.plaf;uses:="javax.swing,javax.swing.border,javax.accessibility,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_005_J2SE", \
- javax.swing.table;uses:="javax.swing.event,javax.swing.plaf,javax.swing.border,javax.swing,javax.accessibility";version="0.0.0.1_005_J2SE", \
- javax.swing.text.html.parser;uses:="javax.swing.text.html,javax.swing.text";version="0.0.0.1_005_J2SE", \
- javax.swing.text.html;uses:="javax.swing.event,javax.swing.text,javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.border,javax.swing.undo";version="0.0.0.1_005_J2SE", \
- javax.swing.text.rtf;uses:="javax.swing.text";version="0.0.0.1_005_J2SE", \
- javax.swing.text;uses:="javax.swing.event,javax.swing.tree,javax.swing.undo,javax.swing,javax.swing.plaf,javax.swing.plaf.basic,javax.accessibility,javax.swing.text.html";version="0.0.0.1_005_J2SE", \
- javax.swing.tree;uses:="javax.swing.event,javax.swing,javax.swing.border,javax.swing.plaf,javax.swing.plaf.basic";version="0.0.0.1_005_J2SE", \
- javax.swing.undo;uses:="javax.swing,javax.swing.event";version="0.0.0.1_005_J2SE", \
- javax.swing;uses:="javax.swing.event,javax.accessibility,javax.swing.text,javax.swing.plaf,javax.swing.border,javax.swing.tree,javax.swing.table,javax.swing.colorchooser,javax.swing.plaf.basic,javax.swing.text.html,javax.swing.filechooser,javax.print.attribute,javax.swing.plaf.metal";version="0.0.0.1_005_J2SE", \
- javax.transaction.xa;version="0.0.0.1_005_J2SE", \
- javax.transaction;version="0.0.0.1_005_J2SE", \
- javax.xml.datatype;uses:="javax.xml.namespace";version="0.0.0.1_005_J2SE", \
- javax.xml.namespace;version="0.0.0.1_005_J2SE", \
- javax.xml.parsers;uses:="javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="0.0.0.1_005_J2SE", \
- javax.xml.transform.dom;uses:="javax.xml.transform,org.w3c.dom";version="0.0.0.1_005_J2SE", \
- javax.xml.transform.sax;uses:="org.xml.sax.ext,javax.xml.transform,org.xml.sax,javax.xml.transform.stream";version="0.0.0.1_005_J2SE", \
- javax.xml.transform.stream;uses:="javax.xml.transform";version="0.0.0.1_005_J2SE", \
- javax.xml.transform;version="0.0.0.1_005_J2SE", \
- javax.xml.validation;uses:="org.w3c.dom.ls,javax.xml.transform,javax.xml.transform.stream,org.xml.sax,org.w3c.dom";version="0.0.0.1_005_J2SE", \
- javax.xml.xpath;uses:="org.xml.sax,javax.xml.namespace";version="0.0.0.1_005_J2SE", \
- javax.xml;version="0.0.0.1_005_J2SE", \
- org.ietf.jgss;version="0.0.0.1_005_J2SE", \
- org.omg.CORBA.DynAnyPackage;uses:="org.omg.CORBA";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA.ORBPackage;uses:="org.omg.CORBA";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA.TypeCodePackage;uses:="org.omg.CORBA";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA.portable;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA;uses:="org.omg.CORBA.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA_2_3.portable,org.omg.CORBA.TypeCodePackage";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA_2_3.portable;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.CORBA_2_3;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.CosNaming.NamingContextExtPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.CosNaming.NamingContextPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.CosNaming";version="0.0.0.1_005_J2SE", \
- org.omg.CosNaming;uses:="org.omg.CORBA.portable,org.omg.CORBA,org.omg.PortableServer,org.omg.CosNaming.NamingContextPackage,org.omg.CosNaming.NamingContextExtPackage";version="0.0.0.1_005_J2SE", \
- org.omg.Dynamic;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.DynamicAny.DynAnyFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.DynamicAny.DynAnyPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.DynamicAny;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage";version="0.0.0.1_005_J2SE", \
- org.omg.IOP.CodecFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.IOP.CodecPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.IOP;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage";version="0.0.0.1_005_J2SE", \
- org.omg.Messaging;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableInterceptor.ORBInitInfoPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableInterceptor;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.IOP,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.CORBA_2_3.portable,org.omg.Dynamic";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer.CurrentPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer.POAManagerPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer.POAPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer.ServantLocatorPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer.portable;uses:="org.omg.CORBA,org.omg.PortableServer";version="0.0.0.1_005_J2SE", \
- org.omg.PortableServer;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.CORBA_2_3,org.omg.PortableServer.ServantLocatorPackage";version="0.0.0.1_005_J2SE", \
- org.omg.SendingContext;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_005_J2SE", \
- org.omg.stub.java.rmi;uses:="javax.rmi.CORBA";version="0.0.0.1_005_J2SE", \
- org.w3c.dom.bootstrap;uses:="org.w3c.dom";version="0.0.0.1_005_J2SE", \
- org.w3c.dom.events;uses:="org.w3c.dom,org.w3c.dom.views";version="0.0.0.1_005_J2SE", \
- org.w3c.dom.ls;uses:="org.w3c.dom,org.w3c.dom.events,org.w3c.dom.traversal";version="0.0.0.1_005_J2SE", \
- org.w3c.dom;version="0.0.0.1_005_J2SE", \
- org.xml.sax.ext;uses:="org.xml.sax,org.xml.sax.helpers";version="0.0.0.1_005_J2SE", \
- org.xml.sax.helpers;uses:="org.xml.sax";version="0.0.0.1_005_J2SE", \
- org.xml.sax;version="0.0.0.1_005_J2SE"
+jre-1.8-java-base= \
+ ${dollar}{jre-1.7-java-base}, \
+ java.time, \
+ java.time.chrono, \
+ java.time.format, \
+ java.time.temporal, \
+ java.time.zone, \
+ java.util.function, \
+ java.util.stream
 
-jre-1.6=, \
+jre-1.6= \
+ ${dollar}{jre-1.6-java-base}, \
  javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_006_JavaSE", \
  javax.activation;version="0.0.0.1_006_JavaSE", \
  javax.activity;version="0.0.0.1_006_JavaSE", \
@@ -554,7 +373,8 @@ jre-1.6=, \
  org.xml.sax.helpers;uses:="org.xml.sax";version="0.0.0.1_006_JavaSE", \
  org.xml.sax;version="0.0.0.1_006_JavaSE"
 
-jre-1.7=, \
+jre-1.7= \
+ ${dollar}{jre-1.7-java-base}, \
  javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_007_JavaSE", \
  javax.activation;version="0.0.0.1_007_JavaSE", \
  javax.activity;version="0.0.0.1_007_JavaSE", \
@@ -709,7 +529,8 @@ jre-1.7=, \
  org.xml.sax.helpers;uses:="org.xml.sax";version="0.0.0.1_007_JavaSE", \
  org.xml.sax;version="0.0.0.1_007_JavaSE"
  
-jre-1.8=, \
+jre-1.8= \
+ ${dollar}{jre-1.8-java-base}, \
  javax.accessibility;version="0.0.0.1_008_JavaSE";uses:="javax.swing.text", \
  javax.activation;version="0.0.0.1_008_JavaSE", \
  javax.activity;version="0.0.0.1_008_JavaSE", \
@@ -739,9 +560,9 @@ jre-1.8=, \
  javax.management.relation;version="0.0.0.1_008_JavaSE";uses:="javax.management", \
  javax.management.remote;version="0.0.0.1_008_JavaSE";uses:="javax.management,javax.security.auth", \
  javax.management.remote.rmi;version="0.0.0.1_008_JavaSE";uses:="javax.management,javax.management.remote,javax.rmi.CORBA,javax.security.auth,org.omg.CORBA,org.omg.CORBA.portable,org.omg.CORBA_2_3.portable", \
-  javax.management.timer;version="0.0.0.1_008_JavaSE";uses:="javax.management", \
-  javax.naming;version="0.0.0.1_008_JavaSE", \
-  javax.naming.directory;version="0.0.0.1_008_JavaSE";uses:="javax.naming", \
+ javax.management.timer;version="0.0.0.1_008_JavaSE";uses:="javax.management", \
+ javax.naming;version="0.0.0.1_008_JavaSE", \
+ javax.naming.directory;version="0.0.0.1_008_JavaSE";uses:="javax.naming", \
  javax.naming.event;version="0.0.0.1_008_JavaSE";uses:="javax.naming,javax.naming.directory", \
  javax.naming.ldap;version="0.0.0.1_008_JavaSE";uses:="javax.naming,javax.naming.directory,javax.naming.event,javax.net.ssl", \
  javax.naming.spi;version="0.0.0.1_008_JavaSE";uses:="javax.naming,javax.naming.directory", \
@@ -865,7 +686,9 @@ jre-1.8=, \
  org.xml.sax.ext;version="0.0.0.1_008_JavaSE";uses:="org.xml.sax,org.xml.sax.helpers", \
  org.xml.sax.helpers;version="0.0.0.1_008_JavaSE";uses:="org.xml.sax"
 
-jre-jpms=${dollar}{felix.jpms.felix.default}
+jre-jpms= \
+  ${dollar}{felix.detect.jpms.java} \
+  ${dollar}{felix.jpms.felix.default}
 
 felix.jpms.java.se= \
  ${dollar}{felix.jpms.${dollar}{felix.detect.jpms.java.base}} \