-
-
Notifications
You must be signed in to change notification settings - Fork 489
Java 11 Compatibility
Date | 2018 09 11 | Contacts | María Arias de Reyna |
Status | Research | Release | GeoNetwork 4.0 |
Resources | Initial research undertaken by GeoCat, expect additional activities to be required across the GeoNetwork community | Ticket # | OSGeo Java codesprint 2018 |
Source code | n/a | ||
Funding | GeoCat providing initial assessment on behalf of GeoNetwork Enterprise product |
The Java ecosystem is now lead by OpenJDK and has changed release cadence (two numbered release each year, with long-term-support releases every three years).
With this in mind there are two long-term-support releases:
- Java 8 (LTS): 2014-2026 AdoptOpenJDK
- Java 11 (LTS): 2018-2024 AdoptOpenJDK
- Java 18 (LTS): 2021-TBA
Aside: We were initially concerned that Java 8 would no longer be supported, but an industry response lead by Red Hat, Eclipse Foundation and others is continuing to make OpenJDK 8 available to their customers and for Windows and macOS at http://adoptopenjdk.net.
María Arias de Reyna participated in OSGeo Java 2018 Code Sprint:
Results:
-
Naive Attempt: Run with maven/jetty
- As expected Spring fails to load
- Warnings on use of reflection "All illegal access operations will be denied in a future release"
-
Build with maven
- Missing javax classes (and probably even more missing/moved core JDK classes
- Warnings on use of reflection "All illegal access operations will be denied in a future release"
Requirements:
- Replace Spring with latest version: from 3.2.0 to 5
- Locate and replace all imports referencing missing JDK API
- Replace other dependencies that may be struggling with JDK 11
- Check all reflection
Assessment:
-
A new release of GeoTools is needed: Java 9 introduced a restriction on Service Registry (used by the GeoTools library to coordinate plugins) a new release of GeoTools will be required before GeoNetwork can run on Java 11
-
With some care releases of GeoNetwork should be compatible with both Java 8 and Java 11.
Progress:
As part of https://github.com/geonetwork/core-geonetwork/wiki/Bolsena-2020:
- Use of
jdeps
to short-list dependencies to replace (dreaded split-package problem)
For each dependency we need to look at how it is failing in Java 11, and if a new release is available to address the problem. As an example we know that an upgrade to Spring 5 is required for Java 11 compatibility.
Dependencies have some common failings:
-
Use of some internal
com.sun
classes or API.This can occur when a dependency is using reflection to access a codec or other api directly for greater control, rather than making use of a more limited public api.
When running often only the first warning is reported, use
--illegal-access=warn
to report more.Mitigation: Check if an official API is now available, this is often the case for reflection on the
Unsafe
class for improved memory management control. As an alternative look for an open source project that performs a similar function. -
Unable to access a javax package that is expected to be included in the Java Runtime.
This can occur when a java runtime module is not turned on during startup (we can adjust this with JVM startup parameters for jetty or tomcat).
More seriously this can occur when the API is no longer part of Java, either because Java Enterprise Edition content has now moved to the Eclipse Foundation Jakarta project, or because functionality has been dropped from the Java ecosystem completely.
Example:
java.xml.bind
is no longer included in Java 11, and must be added as a dependency:<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>${jaxb.api.version}</version> </dependency>
Reference: https://www.dariawan.com/tutorials/java/using-jaxb-java-11/
-
Split package error preventing the jar from being loaded
This occurs when a jar tries to publish a class into a package that is already used by another jar. As an example many of our xml libraries try to create additional classes in
javax.xml
package and fail to load as a result. Mitigation: Ideally upgrade to a newer official version, or if we have to recompile our own fork (refactoring the code to use a unique package).
- Migrate to GeoTools 23.0:addresses the GeoTools blocker found in 2018 activity
- Upgrade to Spring 5
- Upgrade for JPA 2
Dependencies to review from jdeps
audit:
unzip web-app-3.11.0-20200629.221942.war
cd WEB-INF/lib
rm jaxb-runtime-2.4.0-b180830.0438.jar
jdeps --jdk-internals -R *.jar
-
Java 8: fails due to a bug in Jed's
jdeps -jdkinternals -R . *.jar Exception in thread "main" java.lang.InternalError: Missing message: warn.skipped.entry
Removing jaxb-runtime-2.4.0-b180830.0438.jar fixed it.
-
Java 9: OpenJDK 9 and Oracle JDK 9.0.4
jdeps --jdk-internals -R *.jar Exception in thread "main" java.lang.module.FindException: Module com.sun.istack.runtime not found, required by com.sun.xml.bind
Go through jars in batches so we can figure out what is wrong:
- The jar
jaxb-runtime-2.4.0-b180830.0438.jar
was producing the error in jdeps
- The jar
-
Java 11: Oracle Java 11
jdeps --jdk-internals -R *.jar Exception in thread "main" java.lang.module.FindException: Module java.activation not found, required by org.jvnet.staxex
Java no longer includes activation component, we need an explicit dependency to even test.
split package: com.sun.activation.registries [jrt:/java.activation, activation-1.1.1.jar]
split package: com.sun.xml.txw2 [file:///Users/jgarnett/Downloads/web-app-3.11.0-20200629.221942-2/WEB-INF/lib/txw2-2.4.0-b180830.0438.jar, jaxb-core-2.2.7.jar]
split package: com.sun.xml.txw2.annotation [file:///Users/jgarnett/Downloads/web-app-3.11.0-20200629.221942-2/WEB-INF/lib/txw2-2.4.0-b180830.0438.jar, jaxb-core-2.2.7.jar]
split package: com.sun.xml.txw2.output [file:///Users/jgarnett/Downloads/web-app-3.11.0-20200629.221942-2/WEB-INF/lib/txw2-2.4.0-b180830.0438.jar, jaxb-core-2.2.7.jar]
split package: javax.activation [jrt:/java.activation, activation-1.1.1.jar, javax.activation-api-1.2.0.jar]
split package: javax.annotation [jrt:/java.xml.ws.annotation, javaee-api-7.0.jar, jsr305-2.0.1.jar]
split package: javax.jws [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.jws.soap [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.transaction [jrt:/java.transaction, geronimo-jta_1.0.1B_spec-1.0.1.jar, javaee-api-7.0.jar, jboss-transaction-api_1.2_spec-1.0.0.Final.jar]
split package: javax.transaction.xa [jrt:/java.sql, geronimo-jta_1.0.1B_spec-1.0.1.jar, javaee-api-7.0.jar, jboss-transaction-api_1.2_spec-1.0.0.Final.jar]
split package: javax.xml [jrt:/java.xml, jsr173_api-1.0.jar, xml-apis-1.4.01.jar]
split package: javax.xml.bind [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.bind.annotation [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.bind.annotation.adapters [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.bind.attachment [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.bind.helpers [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.bind.util [jrt:/java.xml.bind, javaee-api-7.0.jar, jaxb-api-2.2.11.jar]
split package: javax.xml.datatype [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: javax.xml.namespace [jrt:/java.xml, jsr173_api-1.0.jar, xml-apis-1.4.01.jar]
split package: javax.xml.parsers [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: javax.xml.soap [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.stream [jrt:/java.xml, jsr173_api-1.0.jar, xml-apis-1.4.01.jar]
split package: javax.xml.stream.events [jrt:/java.xml, jsr173_api-1.0.jar, xml-apis-1.4.01.jar]
split package: javax.xml.stream.util [jrt:/java.xml, jsr173_api-1.0.jar, xml-apis-1.4.01.jar]
split package: javax.xml.transform [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: javax.xml.transform.dom [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: javax.xml.transform.sax [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: javax.xml.transform.stax [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: javax.xml.transform.stream [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: javax.xml.validation [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: javax.xml.ws [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.handler [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.handler.soap [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.http [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.soap [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.spi [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.spi.http [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.ws.wsaddressing [jrt:/java.xml.ws, javaee-api-7.0.jar]
split package: javax.xml.xpath [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: org.w3c.dom [jrt:/java.xml, jaxen-1.1.4.jar, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar, xom-1.1.jar]
split package: org.w3c.dom.bootstrap [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: org.w3c.dom.css [jrt:/jdk.xml.dom, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.events [jrt:/java.xml, batik-ext-1.10.jar, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.html [jrt:/jdk.xml.dom, xercesImpl-2.11.0.jar, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.ls [jrt:/java.xml, xml-apis-1.4.01.jar]
split package: org.w3c.dom.ranges [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.stylesheets [jrt:/jdk.xml.dom, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.traversal [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.views [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.w3c.dom.xpath [jrt:/jdk.xml.dom, xml-apis-1.4.01.jar]
split package: org.xml.sax [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.xml.sax.ext [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
split package: org.xml.sax.helpers [jrt:/java.xml, xml-apis-1.4.01.jar, xmlParserAPIs-2.6.2.jar]
-
camel-core-2.14.4.jar -> jdk.unsupported
org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8$TreeBin -> sun.misc.Unsafe JDK internal API (jdk.unsupported)
#### Internal API Use
The following either produce warnings at runtime, or prevent startup if the class in question is no longer available:
ant-1.6.5.jar -> JDK removed internal API org.apache.tools.ant.taskdefs.email.UUMailer -> sun.misc.UUEncoder JDK internal API (JDK removed internal API) camel-core-2.14.4.jar -> jdk.unsupported org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) org.apache.camel.com.googlecode.concurrentlinkedhashmap.ConcurrentHashMapV8$TreeBin -> sun.misc.Unsafe JDK internal API (jdk.unsupported) core-3.11.0-SNAPSHOT.jar -> java.base org.fao.geonet.kernel.url.UrlChecker -> sun.net.ftp.FtpLoginException JDK internal API (java.base) dom4j-1.6.1.jar -> JDK removed internal API org.dom4j.datatype.DatatypeAttribute -> org.relaxng.datatype.DatatypeException JDK internal API (JDK removed internal API) org.dom4j.datatype.DatatypeAttribute -> org.relaxng.datatype.ValidationContext JDK internal API (JDK removed internal API) org.dom4j.datatype.DatatypeElement -> org.relaxng.datatype.DatatypeException JDK internal API (JDK removed internal API) org.dom4j.datatype.DatatypeElement -> org.relaxng.datatype.ValidationContext JDK internal API (JDK removed internal API) org.dom4j.datatype.SchemaParser -> org.relaxng.datatype.DatatypeException JDK internal API (JDK removed internal API) org.dom4j.datatype.SchemaParser -> org.relaxng.datatype.ValidationContext JDK internal API (JDK removed internal API) ehcache-core-2.6.2.jar -> jdk.unsupported net.sf.ehcache.pool.sizeof.UnsafeSizeOf -> sun.misc.Unsafe JDK internal API (jdk.unsupported) groovy-all-2.3.11.jar -> java.desktop groovy-all-2.3.11.jar -> jdk.unsupported groovy.json.internal.FastStringUtils -> sun.misc.Unsafe JDK internal API (jdk.unsupported) groovy.json.internal.FastStringUtils$StringImplementation$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) groovy.json.internal.FastStringUtils$StringImplementation$2 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) groovy.ui.ConsoleApplet -> java.awt.peer.ComponentPeer JDK internal API (java.desktop) groovy.ui.ConsoleApplet -> sun.awt.CausedFocusEvent$Cause JDK internal API (java.desktop) groovy.ui.ConsoleApplet -> sun.java2d.pipe.Region JDK internal API (java.desktop) guava-18.0.jar -> jdk.unsupported com.google.common.cache.Striped64 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.google.common.cache.Striped64$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.google.common.cache.Striped64$Cell -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) hadoop-core-1.0.0.jar -> java.base hadoop-core-1.0.0.jar -> java.security.jgss org.apache.hadoop.net.NetUtils$QualifiedHostResolver -> sun.net.dns.ResolverConfiguration JDK internal API (java.base) org.apache.hadoop.net.NetUtils$QualifiedHostResolver -> sun.net.util.IPAddressUtil JDK internal API (java.base) org.apache.hadoop.security.KerberosName -> sun.security.krb5.Config JDK internal API (java.security.jgss) org.apache.hadoop.security.KerberosName -> sun.security.krb5.KrbException JDK internal API (java.security.jgss) org.apache.hadoop.security.SecurityUtil -> sun.security.jgss.krb5.Krb5Util JDK internal API (java.security.jgss) org.apache.hadoop.security.SecurityUtil -> sun.security.krb5.Credentials JDK internal API (java.security.jgss) org.apache.hadoop.security.SecurityUtil -> sun.security.krb5.PrincipalName JDK internal API (java.security.jgss) org.apache.hadoop.security.authentication.client.KerberosAuthenticator$1 -> sun.security.jgss.GSSUtil JDK internal API (java.security.jgss) jai_codec-1.1.3.jar -> JDK removed internal API jai_codec-1.1.3.jar -> java.base com.sun.media.jai.codecimpl.JPEGImage -> com.sun.image.codec.jpeg.ImageFormatException JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImage -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImage -> com.sun.image.codec.jpeg.JPEGImageDecoder JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImageEncoder -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImageEncoder -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImageEncoder -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.JPEGImageEncoder -> com.sun.image.codec.jpeg.JPEGQTable JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.PNMImage -> sun.security.action.GetPropertyAction JDK internal API (java.base) com.sun.media.jai.codecimpl.PNMImageEncoder -> sun.security.action.GetPropertyAction JDK internal API (java.base) com.sun.media.jai.codecimpl.TIFFImage -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.TIFFImage -> com.sun.image.codec.jpeg.JPEGDecodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.TIFFImage -> com.sun.image.codec.jpeg.JPEGImageDecoder JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.TIFFImageEncoder -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.TIFFImageEncoder -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.TIFFImageEncoder -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.fpx.FPXImage -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.fpx.FPXImage -> com.sun.image.codec.jpeg.JPEGDecodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.codecimpl.fpx.FPXImage -> com.sun.image.codec.jpeg.JPEGImageDecoder JDK internal API (JDK removed internal API) jai_core-1.1.3.jar -> JDK removed internal API jai_core-1.1.3.jar -> java.desktop com.sun.media.jai.opimage.IIPResolutionOpImage -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.opimage.IIPResolutionOpImage -> com.sun.image.codec.jpeg.JPEGDecodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.opimage.IIPResolutionOpImage -> com.sun.image.codec.jpeg.JPEGImageDecoder JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileDecoder -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileDecoder -> com.sun.image.codec.jpeg.JPEGDecodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileDecoder -> com.sun.image.codec.jpeg.JPEGImageDecoder JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileDecoder -> com.sun.image.codec.jpeg.JPEGQTable JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileEncoder -> com.sun.image.codec.jpeg.JPEGCodec JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileEncoder -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileEncoder -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileEncoder -> com.sun.image.codec.jpeg.JPEGQTable JDK internal API (JDK removed internal API) com.sun.media.jai.tilecodec.JPEGTileEncoder -> sun.awt.image.codec.JPEGParam JDK internal API (JDK removed internal API) javax.media.jai.RasterAccessor -> sun.awt.image.BytePackedRaster JDK internal API (java.desktop) jai_imageio-1.1.jar -> java.base com.sun.media.imageioimpl.plugins.pnm.PNMImageReader -> sun.security.action.GetPropertyAction JDK internal API (java.base) com.sun.media.imageioimpl.plugins.pnm.PNMImageWriter -> sun.security.action.GetPropertyAction JDK internal API (java.base) jcs-1.3.jar -> JDK removed internal API org.apache.jcs.utils.servlet.BasicHttpAuthenticator -> sun.misc.BASE64Decoder JDK internal API (JDK removed internal API) je-4.0.92.jar -> jdk.jconsole com.sleepycat.je.jmx.plugin.Stats$GraphFrame -> sun.tools.jconsole.Plotter JDK internal API (jdk.jconsole) com.sleepycat.je.jmx.plugin.Stats$GraphFrame -> sun.tools.jconsole.Plotter$Unit JDK internal API (jdk.jconsole) com.sleepycat.je.jmx.plugin.Stats$GraphFrame -> sun.tools.jconsole.PlotterPanel JDK internal API (jdk.jconsole) com.sleepycat.je.jmx.plugin.Stats$GraphFrame -> sun.tools.jconsole.TimeComboBox JDK internal API (jdk.jconsole) jsp-2.1-6.1.14.jar -> JDK removed internal API jsp-2.1-6.1.14.jar -> java.xml com.sun.appserv.ClassLoaderUtil -> sun.misc.URLClassPath JDK internal API (JDK removed internal API) org.apache.taglibs.standard.tag.common.xml.JSTLXPathFactory -> com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xalan.internal.res.XSLMessages JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xml.internal.utils.PrefixResolver JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.VariableStack JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.XPath JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.XPathContext JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.jaxp.JAXPExtensionsProvider JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.jaxp.JAXPPrefixResolver JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.jaxp.JAXPVariableStack JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.objects.XNodeSet JDK internal API (java.xml) org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl -> com.sun.org.apache.xpath.internal.objects.XObject JDK internal API (java.xml) leveldb-0.2.jar -> java.base org.iq80.leveldb.util.ByteBufferSupport -> sun.nio.ch.FileChannelImpl JDK internal API (java.base) metrics-core-3.0.2.jar -> jdk.unsupported com.codahale.metrics.Striped64 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.codahale.metrics.Striped64$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) com.codahale.metrics.Striped64$Cell -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala-library-2.9.1.jar -> jdk.unsupported scala.concurrent.forkjoin.ForkJoinPool -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.ForkJoinPool$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.ForkJoinTask -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.ForkJoinTask$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.ForkJoinWorkerThread -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.ForkJoinWorkerThread$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.LinkedTransferQueue -> sun.misc.Unsafe JDK internal API (jdk.unsupported) scala.concurrent.forkjoin.LinkedTransferQueue$1 -> sun.misc.Unsafe JDK internal API (jdk.unsupported) soap-2.3.1.jar -> java.base org.apache.soap.util.net.SSLUtils -> sun.net.www.protocol.http.HttpURLConnection JDK internal API (java.base) spring-core-4.3.0.RELEASE.jar -> jdk.unsupported org.springframework.objenesis.instantiator.sun.UnsafeFactoryInstantiator -> sun.misc.Unsafe JDK internal API (jdk.unsupported) xom-1.1.jar -> java.xml nu.xom.JDK15XML1_0Parser -> com.sun.org.apache.xerces.internal.parsers.DTDConfiguration JDK internal API (java.xml) nu.xom.JDK15XML1_0Parser -> com.sun.org.apache.xerces.internal.parsers.SAXParser JDK internal API (java.xml) nu.xom.JDK15XML1_0Parser -> com.sun.org.apache.xerces.internal.util.SecurityManager JDK internal API (java.xml) nu.xom.JDK15XML1_0Parser -> com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration JDK internal API (java.xml)
# Proposal Type:
* Type: Technical Debt
* Module: core-geonetwork
# Voting History
[Project Steering Committee](https://geonetwork-opensource.org/manuals/trunk/en/overview/authors.html) (voting):
* Vote Proposed: TBA
* Emanuele Tajariol
* Florent Gravin
* Francois Prunayre
* Jeroen Ticheler - Chair
* Jesse Eichar
* Jose Garcia
* Paul van Genuchten
* Simon Pigot
* Jo Cook
Community support (non-voting):
* Jody Garnett
# Participants
* María Arias de Reyna (initial), Jose Garcia, Jody Garnett, David Blasby
If you have some comments, start a discussion, raise an issue or use one of our other communication channels to talk to us.