Hi, by analyzing tomcat_exporter-master\client\pom.xml, I found a series of dependency conflicts between the libraries transitively introduced by org.apache.tomcat.embed:tomcat-embed-core:8.5.11 and org.apache.tomcat:tomcat-catalina:8.5.24. As the JVM only load the classes present first on the classpath and shadow the other duplicate ones with the same names. The dependency conflict problem brings high risks of "NoSuchMethodException" or "NoSuchMethodError" issues at runtime. The conflicting details are listed below. Maybe the solution is that upgrading org.apache.tomcat.embed:tomcat-embed-core from 8.5.11 to 8.5.24. Please notice that. Thanks!
===============projectPath->nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT@D:\ws\release2\tomcat_exporter-master\client\pom.xml
1. Risk for jar-pair:org.apache.tomcat:tomcat-util-scan:8.5.24:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:
a) Methods that only exist in org.apache.tomcat:tomcat-util-scan:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile->org.apache.tomcat:tomcat-util-scan:8.5.24::compile]
<org.apache.tomcat.util.descriptor.web.XmlEncodingBase: void setCharset(java.nio.charset.Charset)>
<org.apache.tomcat.util.descriptor.web.XmlEncodingBase: void ()>
<org.apache.tomcat.util.descriptor.web.XmlEncodingBase: java.nio.charset.Charset getCharset()>
<org.apache.tomcat.util.digester.Digester: void replaceSystemProperties()>
<org.apache.tomcat.util.digester.Digester: void setPropertySource(org.apache.tomcat.util.IntrospectionUtils$PropertySource)>
<org.apache.tomcat.util.scan.AbstractInputStreamJar: void populateMrMap()>
<org.apache.tomcat.util.scan.StandardJarScanner: void doScanClassPath(org.apache.tomcat.JarScanType,javax.servlet.ServletContext,org.apache.tomcat.JarScannerCallback,java.util.Set)>
<org.apache.tomcat.util.scan.StandardJarScanner: void processURLs(org.apache.tomcat.JarScanType,org.apache.tomcat.JarScannerCallback,java.util.Set,boolean,java.util.Deque)>
<org.apache.tomcat.util.scan.StandardJarScanner: void addClassPath(java.util.Deque)>
b) Methods that only exist in org.apache.tomcat.embed:tomcat-embed-core:8.5.11:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat.embed:tomcat-embed-core:8.5.11::test]
<org.apache.tomcat.util.descriptor.web.SecurityCollection: void setEncoding(java.lang.String)>
<org.apache.tomcat.util.descriptor.web.SecurityCollection: java.lang.String getEncoding()>
<org.apache.tomcat.util.descriptor.web.WebXml: java.lang.String escapeXml(java.lang.String)>
2. Risk for jar-pair:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:org.apache.tomcat:tomcat-catalina:8.5.24:
a) Methods that only exist in org.apache.tomcat.embed:tomcat-embed-core:8.5.11:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat.embed:tomcat-embed-core:8.5.11::test]
<org.apache.catalina.authenticator.BasicAuthenticator$BasicCredentials: void (org.apache.tomcat.util.buf.ByteChunk)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: java.util.Map access$400(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: void addListener(javax.security.auth.message.config.RegistrationListener)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: void access$000(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl,javax.security.auth.message.config.RegistrationListener)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: boolean access$300(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl,javax.security.auth.message.config.RegistrationListener)>
<org.apache.catalina.connector.InputBuffer: void setConverter()>
<org.apache.catalina.connector.OutputBuffer: void setConverter()>
<org.apache.catalina.connector.Request: boolean isPushSupported()>
<org.apache.catalina.connector.Request: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.connector.Request: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.connector.Request: boolean isSSLAttribute(java.lang.String)>
<org.apache.catalina.connector.RequestFacade: boolean isPushSupported()>
<org.apache.catalina.connector.RequestFacade: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.connector.RequestFacade: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.core.ApplicationContext: javax.servlet.ServletRegistration$Dynamic addServlet(java.lang.String,java.lang.String,javax.servlet.Servlet)>
<org.apache.catalina.core.ApplicationDispatcher: void (org.apache.catalina.Wrapper,java.lang.String,java.lang.String,java.lang.String,java.lang.String,org.apache.catalina.servlet4preview.http.Mapping,java.lang.String)>
<org.apache.catalina.core.ApplicationHttpRequest: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.core.ApplicationHttpRequest: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.core.ApplicationHttpRequest: void setMapping(org.apache.catalina.servlet4preview.http.Mapping)>
<org.apache.catalina.core.ApplicationMapping: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.core.ApplicationPushBuilder: java.lang.String getLastModified()>
<org.apache.catalina.core.ApplicationPushBuilder: boolean push()>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder lastModified(java.lang.String)>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.core.ApplicationPushBuilder lastModified(java.lang.String)>
<org.apache.catalina.core.ApplicationPushBuilder: void (javax.servlet.http.HttpServletRequest)>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder etag(java.lang.String)>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.core.ApplicationPushBuilder conditional(boolean)>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder conditional(boolean)>
<org.apache.catalina.core.ApplicationPushBuilder: java.lang.String decode(java.lang.String,java.lang.String)>
<org.apache.catalina.core.ApplicationPushBuilder: boolean isConditional()>
<org.apache.catalina.core.ApplicationPushBuilder: org.apache.catalina.core.ApplicationPushBuilder etag(java.lang.String)>
<org.apache.catalina.core.ApplicationPushBuilder: java.lang.String getEtag()>
<org.apache.catalina.filters.RemoteIpFilter$XForwardedRequest: org.apache.catalina.core.ApplicationPushBuilder getPushBuilder()>
<org.apache.catalina.manager.HTMLManagerServlet: void ()>
<org.apache.catalina.servlet4preview.http.HttpServletRequest: boolean isPushSupported()>
<org.apache.catalina.servlet4preview.http.HttpServletRequest: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.servlet4preview.http.HttpServletRequest: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper: org.apache.catalina.servlet4preview.http.Mapping getMapping()>
<org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper: boolean isPushSupported()>
<org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.servlet4preview.http.PushBuilder: boolean isConditional()>
<org.apache.catalina.servlet4preview.http.PushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder etag(java.lang.String)>
<org.apache.catalina.servlet4preview.http.PushBuilder: boolean push()>
<org.apache.catalina.servlet4preview.http.PushBuilder: java.lang.String getLastModified()>
<org.apache.catalina.servlet4preview.http.PushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder lastModified(java.lang.String)>
<org.apache.catalina.servlet4preview.http.PushBuilder: java.lang.String getEtag()>
<org.apache.catalina.servlet4preview.http.PushBuilder: org.apache.catalina.servlet4preview.http.PushBuilder conditional(boolean)>
<org.apache.catalina.servlets.CGIServlet$CGIRunner: void access$900(org.apache.catalina.servlets.CGIServlet$CGIRunner,java.io.BufferedReader)>
<org.apache.catalina.servlets.CGIServlet: java.lang.Object access$600()>
<org.apache.catalina.servlets.CGIServlet: java.util.regex.Pattern access$500(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: long access$1100(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$000(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: org.apache.juli.logging.Log access$100()>
<org.apache.catalina.servlets.CGIServlet: boolean access$1000(org.apache.catalina.servlets.CGIServlet,javax.servlet.http.HttpServletResponse,int)>
<org.apache.catalina.servlets.CGIServlet: org.apache.tomcat.util.res.StringManager access$200()>
<org.apache.catalina.servlets.CGIServlet: java.util.Hashtable access$300(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$400(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.util.List access$800(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$700(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.ssi.SSIMediator: void ()>
<org.apache.catalina.valves.RemoteAddrValve: boolean getAddConnectorPort()>
<org.apache.catalina.valves.RemoteAddrValve: void setAddConnectorPort(boolean)>
<org.apache.catalina.valves.RemoteHostValve: void setAddConnectorPort(boolean)>
<org.apache.catalina.valves.RemoteHostValve: boolean getAddConnectorPort()>
<org.apache.catalina.valves.rewrite.RewriteValve: void ()>
b) Methods that only exist in org.apache.tomcat:tomcat-catalina:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile]
<org.apache.catalina.Context: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.Context: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.Context: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.Context: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.Pipeline: void findNonAsyncValves(java.util.Set)>
<org.apache.catalina.authenticator.AuthenticatorBase: javax.security.auth.message.config.AuthConfigProvider findJaspicProvider()>
<org.apache.catalina.authenticator.AuthenticatorBase: javax.security.auth.callback.CallbackHandler createCallbackHandler()>
<org.apache.catalina.authenticator.AuthenticatorBase: java.lang.String getJaspicCallbackHandlerClass()>
<org.apache.catalina.authenticator.AuthenticatorBase: void setJaspicCallbackHandlerClass(java.lang.String)>
<org.apache.catalina.authenticator.BasicAuthenticator$BasicCredentials: void (org.apache.tomcat.util.buf.ByteChunk,java.nio.charset.Charset)>
<org.apache.catalina.authenticator.BasicAuthenticator: void setCharset(java.lang.String)>
<org.apache.catalina.authenticator.BasicAuthenticator: java.lang.String getCharset()>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: void addListener(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationListenerWrapper)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: boolean access$700(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl,javax.security.auth.message.config.RegistrationListener)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: java.util.List access$300(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: void access$000(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl,org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationListenerWrapper)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl: java.util.Map access$800(org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl findRegistrationContextImpl(java.lang.String,java.lang.String)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: void savePersistentProviders(org.apache.catalina.authenticator.jaspic.PersistentProviderRegistrations$Providers,java.util.Map)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: void savePersistentProvider(org.apache.catalina.authenticator.jaspic.PersistentProviderRegistrations$Providers,org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: void findProvider(javax.security.auth.message.config.AuthConfigProvider,java.util.Map,java.util.List)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: void addRegistrationContextImpl(java.lang.String,java.lang.String,java.lang.String,org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl$RegistrationContextImpl)>
<org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl: javax.security.auth.message.config.AuthConfigProvider createAuthConfigProvider(java.lang.String,java.util.Map)>
<org.apache.catalina.authenticator.jaspic.PersistentProviderRegistrations: void writeOptional(java.lang.String,java.lang.String,java.io.Writer)>
<org.apache.catalina.connector.Connector: java.nio.charset.Charset getURICharset()>
<org.apache.catalina.connector.Request: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder(javax.servlet.http.HttpServletRequest)>
<org.apache.catalina.connector.Request: javax.security.auth.Subject newSubject(java.security.Principal)>
<org.apache.catalina.connector.Request: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder()>
<org.apache.catalina.connector.Request: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.connector.Request: java.util.Set getNonAsyncClassNames()>
<org.apache.catalina.connector.Request: java.nio.charset.Charset getCharset()>
<org.apache.catalina.connector.RequestFacade: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.connector.RequestFacade: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder(javax.servlet.http.HttpServletRequest)>
<org.apache.catalina.connector.RequestFacade: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder()>
<org.apache.catalina.core.ApplicationContext: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.ApplicationContext: javax.servlet.ServletRegistration$Dynamic addJspFile(java.lang.String,java.lang.String)>
<org.apache.catalina.core.ApplicationContext: int getSessionTimeout()>
<org.apache.catalina.core.ApplicationContext: javax.servlet.ServletRegistration$Dynamic addServlet(java.lang.String,java.lang.String,javax.servlet.Servlet,java.util.Map)>
<org.apache.catalina.core.ApplicationContext: void setSessionTimeout(int)>
<org.apache.catalina.core.ApplicationContext: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.core.ApplicationContext: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.ApplicationContext: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.core.ApplicationContextFacade: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.core.ApplicationContextFacade: int getSessionTimeout()>
<org.apache.catalina.core.ApplicationContextFacade: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.ApplicationContextFacade: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.core.ApplicationContextFacade: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.ApplicationContextFacade: void setSessionTimeout(int)>
<org.apache.catalina.core.ApplicationContextFacade: javax.servlet.ServletRegistration$Dynamic addJspFile(java.lang.String,java.lang.String)>
<org.apache.catalina.core.ApplicationDispatcher: void (org.apache.catalina.Wrapper,java.lang.String,java.lang.String,java.lang.String,java.lang.String,org.apache.catalina.servlet4preview.http.ServletMapping,java.lang.String)>
<org.apache.catalina.core.ApplicationFilterChain: void findNonAsyncFilters(java.util.Set)>
<org.apache.catalina.core.ApplicationHttpRequest: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.core.ApplicationHttpRequest: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder()>
<org.apache.catalina.core.ApplicationHttpRequest: void setMapping(org.apache.catalina.servlet4preview.http.ServletMapping)>
<org.apache.catalina.core.ApplicationMapping: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.core.ApplicationPushBuilder: java.lang.String decodePercentSequence(java.lang.String,java.nio.charset.Charset)>
<org.apache.catalina.core.ApplicationPushBuilder: void push()>
<org.apache.catalina.core.ApplicationPushBuilder: void (org.apache.catalina.connector.Request,javax.servlet.http.HttpServletRequest)>
<org.apache.catalina.core.DefaultInstanceManager: void backgroundProcess()>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: javax.servlet.ServletRegistration$Dynamic addJspFile(java.lang.String,java.lang.String)>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: int getSessionTimeout()>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: void setSessionTimeout(int)>
<org.apache.catalina.core.StandardContext$NoPluggabilityServletContext: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.StandardContext: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.StandardContext: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.core.StandardContext: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.core.StandardContext: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.core.StandardPipeline: void findNonAsyncValves(java.util.Set)>
<org.apache.catalina.filters.CorsFilter: java.lang.String getInitParameter(javax.servlet.FilterConfig,java.lang.String,java.lang.String)>
<org.apache.catalina.filters.HttpHeaderSecurityFilter: void setHstsPreload(boolean)>
<org.apache.catalina.filters.HttpHeaderSecurityFilter: boolean isHstsPreload()>
<org.apache.catalina.filters.RemoteIpFilter$XForwardedRequest: org.apache.catalina.servlet4preview.http.PushBuilder getPushBuilder()>
<org.apache.catalina.loader.WebappClassLoaderBase: boolean hasLoggingConfig()>
<org.apache.catalina.manager.StatusTransformer: java.lang.String filterXml(java.lang.String)>
<org.apache.catalina.realm.JNDIRealm: void setReadTimeout(java.lang.String)>
<org.apache.catalina.realm.JNDIRealm: java.lang.String getReadTimeout()>
<org.apache.catalina.realm.RealmBase: boolean hasRoleInternal(java.security.Principal,java.lang.String)>
<org.apache.catalina.servlet4preview.http.HttpServletRequest: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder()>
<org.apache.catalina.servlet4preview.http.HttpServletRequest: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper: org.apache.catalina.servlet4preview.http.ServletMapping getServletMapping()>
<org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper: org.apache.catalina.servlet4preview.http.PushBuilder newPushBuilder()>
<org.apache.catalina.servlet4preview.http.PushBuilder: void push()>
<org.apache.catalina.servlets.CGIServlet$CGIRunner: void access$1000(org.apache.catalina.servlets.CGIServlet$CGIRunner,java.io.BufferedReader)>
<org.apache.catalina.servlets.CGIServlet: java.util.regex.Pattern access$600(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: long access$1200(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: boolean access$000(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$100(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.util.Hashtable access$400(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: boolean access$1100(org.apache.catalina.servlets.CGIServlet,javax.servlet.http.HttpServletResponse,int)>
<org.apache.catalina.servlets.CGIServlet: org.apache.tomcat.util.res.StringManager access$300()>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$500(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.util.List access$900(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: java.lang.Object access$700()>
<org.apache.catalina.servlets.CGIServlet: java.lang.String access$800(org.apache.catalina.servlets.CGIServlet)>
<org.apache.catalina.servlets.CGIServlet: org.apache.juli.logging.Log access$200()>
<org.apache.catalina.servlets.DefaultServlet: void copy(java.io.InputStream,javax.servlet.ServletOutputStream)>
<org.apache.catalina.servlets.DefaultServlet: void service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)>
<org.apache.catalina.servlets.DefaultServlet: void copy(java.io.InputStream,java.io.PrintWriter,java.lang.String)>
<org.apache.catalina.servlets.WebdavServlet: java.lang.String rewriteUrl(java.lang.String)>
<org.apache.catalina.session.JDBCStore: boolean getLocalDataSource()>
<org.apache.catalina.session.JDBCStore: void setLocalDataSource(boolean)>
<org.apache.catalina.startup.FailedContext: void setResponseCharacterEncoding(java.lang.String)>
<org.apache.catalina.startup.FailedContext: java.lang.String getResponseCharacterEncoding()>
<org.apache.catalina.startup.FailedContext: java.lang.String getRequestCharacterEncoding()>
<org.apache.catalina.startup.FailedContext: void setRequestCharacterEncoding(java.lang.String)>
<org.apache.catalina.startup.HostConfig: boolean isDeployThisXML(java.io.File,org.apache.catalina.util.ContextName)>
<org.apache.catalina.util.DOMWriter: void (java.io.Writer)>
<org.apache.catalina.util.ParameterMap: boolean containsValue(java.lang.Object)>
<org.apache.catalina.util.ParameterMap: void checkLocked()>
<org.apache.catalina.util.ParameterMap: java.util.Set entrySet()>
<org.apache.catalina.util.ParameterMap: java.lang.Object get(java.lang.Object)>
<org.apache.catalina.util.ParameterMap: int size()>
<org.apache.catalina.util.ParameterMap: boolean isEmpty()>
<org.apache.catalina.util.ParameterMap: java.util.Collection values()>
<org.apache.catalina.util.ParameterMap: boolean containsKey(java.lang.Object)>
<org.apache.catalina.util.ParameterMap: java.util.Set keySet()>
<org.apache.catalina.util.URLEncoder: java.lang.Object clone()>
<org.apache.catalina.util.URLEncoder: void (java.util.BitSet)>
<org.apache.catalina.util.URLEncoder: void setEncodeSpaceAsPlus(boolean)>
<org.apache.catalina.util.URLEncoder: java.lang.String encode(java.lang.String,java.nio.charset.Charset)>
<org.apache.catalina.util.URLEncoder: void removeSafeCharacter(char)>
<org.apache.catalina.valves.CrawlerSessionManagerValve: java.lang.String getCrawlerIps()>
<org.apache.catalina.valves.CrawlerSessionManagerValve: void setCrawlerIps(java.lang.String)>
<org.apache.catalina.valves.RequestFilterValve: void setAddConnectorPort(boolean)>
<org.apache.catalina.valves.RequestFilterValve: boolean getAddConnectorPort()>
<org.apache.catalina.valves.rewrite.Resolver: java.nio.charset.Charset getUriCharset()>
<org.apache.catalina.valves.rewrite.ResolverImpl: java.nio.charset.Charset getUriCharset()>
<org.apache.catalina.webresources.AbstractArchiveResourceSet: boolean isMultiRelease()>
<org.apache.catalina.webresources.AbstractFileResourceSet: boolean isInvalidWindowsFilename(java.lang.String)>
<org.apache.catalina.webresources.AbstractSingleArchiveResourceSet: boolean isMultiRelease()>
<org.apache.catalina.webresources.JarWarResourceSet: void processArchivesEntriesForMultiRelease()>
<org.apache.catalina.webresources.JarWarResourceSet: boolean isMultiRelease()>
<org.apache.catalina.webresources.StandardRoot: boolean isPackedWarFile()>
<org.apache.catalina.webresources.war.WarURLConnection: long getLastModified()>
3. Risk for jar-pair:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:org.apache.tomcat:tomcat-coyote:8.5.24:
a) Methods that only exist in org.apache.tomcat.embed:tomcat-embed-core:8.5.11:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat.embed:tomcat-embed-core:8.5.11::test]
<org.apache.coyote.AbstractProcessor: void doPush(org.apache.coyote.PushToken)>
<org.apache.coyote.http11.AbstractHttp11JsseProtocol: java.lang.String getSslImplemenationShortName()>
<org.apache.coyote.http11.Http11InputBuffer: void (org.apache.coyote.Request,int)>
<org.apache.coyote.http11.Http11OutputBuffer: void (org.apache.coyote.Response,int)>
<org.apache.coyote.http11.Http11Processor: boolean prepareSendfile(org.apache.coyote.http11.OutputFilter[])>
<org.apache.coyote.http11.Http11Processor: boolean isCompressable()>
<org.apache.coyote.http11.Http11Processor: void (int,org.apache.tomcat.util.net.AbstractEndpoint,int,java.util.Set,int,int,java.util.Map)>
<org.apache.coyote.http11.Http11Processor: boolean breakKeepAliveLoop(org.apache.tomcat.util.net.SocketWrapperBase)>
<org.apache.coyote.http2.HpackDecoder: int getMaxMemorySize()>
<org.apache.coyote.http2.Stream$StreamOutputBuffer: boolean access$002(org.apache.coyote.http2.Stream$StreamOutputBuffer,boolean)>
<org.apache.coyote.http2.Stream: org.apache.juli.logging.Log access$300()>
<org.apache.coyote.http2.Stream: int access$500(org.apache.coyote.http2.Stream,int,boolean)>
<org.apache.coyote.http2.Stream: org.apache.tomcat.util.res.StringManager access$100()>
<org.apache.coyote.http2.Stream: org.apache.coyote.Response access$200(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: org.apache.coyote.Request access$600(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: org.apache.coyote.http2.Http2UpgradeHandler access$400(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: boolean push(org.apache.coyote.Request)>
<org.apache.coyote.http2.StreamProcessor: void doPush(org.apache.coyote.PushToken)>
<org.apache.tomcat.util.http.LegacyCookieProcessor$1: void ()>
<org.apache.tomcat.util.http.LegacyCookieProcessor$1: java.lang.Object initialValue()>
<org.apache.tomcat.util.http.LegacyCookieProcessor$1: java.text.DateFormat initialValue()>
<org.apache.tomcat.util.http.Parameters: java.nio.charset.Charset getCharset(java.lang.String)>
<org.apache.tomcat.util.http.parser.Cookie: void parseCookieRfc2109(org.apache.tomcat.util.http.parser.Cookie$ByteBuffer,org.apache.tomcat.util.http.ServerCookies)>
<org.apache.tomcat.util.net.AbstractJsseEndpoint: javax.net.ssl.SSLEngine createSSLEngine(java.lang.String,java.util.List)>
<org.apache.tomcat.util.net.AprSSLSupport: void (org.apache.tomcat.util.net.SocketWrapperBase,java.lang.String)>
<org.apache.tomcat.util.net.NioEndpoint: void access$500(org.apache.tomcat.util.net.NioEndpoint,org.apache.tomcat.util.net.NioChannel,java.nio.channels.SelectionKey)>
<org.apache.tomcat.util.net.NioEndpoint: java.util.concurrent.CountDownLatch access$400(org.apache.tomcat.util.net.NioEndpoint)>
<org.apache.tomcat.util.net.SecureNio2Channel: java.nio.channels.AsynchronousSocketChannel getIOChannel()>
<org.apache.tomcat.util.net.SecureNioChannel: java.nio.channels.SocketChannel getIOChannel()>
<org.apache.tomcat.util.net.jsse.JSSEUtil: java.security.cert.CertPathParameters getParameters(java.lang.String,java.security.KeyStore)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$700()>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.lang.String access$1100(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: boolean access$600(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: javax.security.cert.X509Certificate[] access$802(org.apache.tomcat.util.net.openssl.OpenSSLEngine,javax.security.cert.X509Certificate[])>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: javax.security.cert.X509Certificate[] access$800(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$502(org.apache.tomcat.util.net.openssl.OpenSSLEngine,java.security.cert.Certificate[])>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: boolean access$900(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.lang.String access$1102(org.apache.tomcat.util.net.openssl.OpenSSLEngine,java.lang.String)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: org.apache.tomcat.util.net.openssl.OpenSSLSessionContext access$400(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: long access$200(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$500(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
b) Methods that only exist in org.apache.tomcat:tomcat-coyote:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile->org.apache.tomcat:tomcat-coyote:8.5.24::compile]
<org.apache.coyote.AbstractProcessor: void doPush(org.apache.coyote.Request)>
<org.apache.coyote.AbstractProtocol: void setConnectionLinger(int)>
<org.apache.coyote.AbstractProtocol: int getConnectionLinger()>
<org.apache.coyote.AbstractProtocol: void setSendReasonPhrase(boolean)>
<org.apache.coyote.AbstractProtocol: int getAcceptCount()>
<org.apache.coyote.AbstractProtocol: boolean getSendReasonPhrase()>
<org.apache.coyote.AbstractProtocol: void setAcceptCount(int)>
<org.apache.coyote.AsyncStateMachine: void asyncMustError()>
<org.apache.coyote.Request: java.nio.charset.Charset getCharset()>
<org.apache.coyote.Request: void setCharset(java.nio.charset.Charset)>
<org.apache.coyote.Response: java.nio.charset.Charset getCharset()>
<org.apache.coyote.ajp.AjpProcessor: void setSendReasonPhrase(boolean)>
<org.apache.coyote.http11.AbstractHttp11JsseProtocol: java.lang.String getSslImplementationShortName()>
<org.apache.coyote.http11.AbstractHttp11Protocol: boolean getSSLDisableCompression()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String[] getCompressibleMimeTypes()>
<org.apache.coyote.http11.AbstractHttp11Protocol: void setAllowHostHeaderMismatch(boolean)>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCACertificateFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSslEnabledProtocols()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCACertificatePath()>
<org.apache.coyote.http11.AbstractHttp11Protocol: boolean getSSLDisableSessionTickets()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCertificateChainFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTruststorePass()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSslProtocol()>
<org.apache.coyote.http11.AbstractHttp11Protocol: int getSessionTimeout()>
<org.apache.coyote.http11.AbstractHttp11Protocol: boolean getAllowHostHeaderMismatch()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getCiphers()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCertificateKeyFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCipherSuite()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeystoreFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: int getTrustMaxCertLength()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTruststoreType()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCARevocationPath()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTruststoreAlgorithm()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getCrlFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTrustManagerClassName()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeystoreProvider()>
<org.apache.coyote.http11.AbstractHttp11Protocol: boolean getRejectIllegalHeaderName()>
<org.apache.coyote.http11.AbstractHttp11Protocol: int getSessionCacheSize()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCertificateFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLVerifyClient()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLHonorCipherOrder()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getAlgorithm()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLProtocol()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getClientAuth()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeystorePass()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTruststoreFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: void setRejectIllegalHeaderName(boolean)>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getCompressibleMimeType()>
<org.apache.coyote.http11.AbstractHttp11Protocol: void setCompressibleMimeType(java.lang.String)>
<org.apache.coyote.http11.AbstractHttp11Protocol: int getSSLVerifyDepth()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeystoreType()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getUseServerCipherSuitesOrder()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeyAlias()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getKeyPass()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLCARevocationFile()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getTruststoreProvider()>
<org.apache.coyote.http11.AbstractHttp11Protocol: java.lang.String getSSLPassword()>
<org.apache.coyote.http11.Http11InputBuffer: void (org.apache.coyote.Request,int,boolean)>
<org.apache.coyote.http11.Http11OutputBuffer: void write(java.lang.String)>
<org.apache.coyote.http11.Http11OutputBuffer: void (org.apache.coyote.Response,int,boolean)>
<org.apache.coyote.http11.Http11Processor: void (int,boolean,boolean,org.apache.tomcat.util.net.AbstractEndpoint,int,java.util.Set,int,int,java.util.Map,boolean)>
<org.apache.coyote.http11.Http11Processor: void prepareSendfile(org.apache.coyote.http11.OutputFilter[])>
<org.apache.coyote.http11.Http11Processor: void setCompressibleMimeTypes(java.lang.String[])>
<org.apache.coyote.http11.Http11Processor: org.apache.tomcat.util.net.SendfileState processSendfile(org.apache.tomcat.util.net.SocketWrapperBase)>
<org.apache.coyote.http11.Http11Processor: boolean isCompressible()>
<org.apache.coyote.http2.ConnectionException: void (java.lang.String,org.apache.coyote.http2.Http2Error,java.lang.Throwable)>
<org.apache.coyote.http2.HeaderSink: void setHeaderException(org.apache.coyote.http2.StreamException)>
<org.apache.coyote.http2.HpackDecoder$HeaderEmitter: void setHeaderException(org.apache.coyote.http2.StreamException)>
<org.apache.coyote.http2.HpackDecoder: int getMaxMemorySizeSoft()>
<org.apache.coyote.http2.Http2Exception: void (java.lang.String,org.apache.coyote.http2.Http2Error,java.lang.Throwable)>
<org.apache.coyote.http2.Http2Protocol: void setInitiatePingDisabled(boolean)>
<org.apache.coyote.http2.Http2UpgradeHandler: void setInitiatePingDisabled(boolean)>
<org.apache.coyote.http2.Stream$StreamInputBuffer: void notifyEof()>
<org.apache.coyote.http2.Stream$StreamInputBuffer: void access$000(org.apache.coyote.http2.Stream$StreamInputBuffer)>
<org.apache.coyote.http2.Stream$StreamOutputBuffer: boolean access$102(org.apache.coyote.http2.Stream$StreamOutputBuffer,boolean)>
<org.apache.coyote.http2.Stream: void setHeaderException(org.apache.coyote.http2.StreamException)>
<org.apache.coyote.http2.Stream: org.apache.coyote.Response access$300(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: org.apache.coyote.Request access$700(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: org.apache.coyote.http2.Http2UpgradeHandler access$500(org.apache.coyote.http2.Stream)>
<org.apache.coyote.http2.Stream: int access$600(org.apache.coyote.http2.Stream,int,boolean)>
<org.apache.coyote.http2.Stream: org.apache.juli.logging.Log access$400()>
<org.apache.coyote.http2.Stream: org.apache.tomcat.util.res.StringManager access$200()>
<org.apache.coyote.http2.Stream: void push(org.apache.coyote.Request)>
<org.apache.coyote.http2.Stream: void receivedData(int)>
<org.apache.coyote.http2.StreamProcessor: void doPush(org.apache.coyote.Request)>
<org.apache.tomcat.util.http.LegacyCookieProcessor$1: void ()>
<org.apache.tomcat.util.http.Parameters: void processParameters(org.apache.tomcat.util.buf.MessageBytes,java.nio.charset.Charset)>
<org.apache.tomcat.util.http.Parameters: java.nio.charset.Charset getCharset(java.lang.String,java.nio.charset.Charset)>
<org.apache.tomcat.util.http.Parameters: void setCharset(java.nio.charset.Charset)>
<org.apache.tomcat.util.http.Parameters: java.nio.charset.Charset getCharset()>
<org.apache.tomcat.util.http.Parameters: void setQueryStringCharset(java.nio.charset.Charset)>
<org.apache.tomcat.util.http.parser.Cookie: void parseCookieRfc2109(org.apache.tomcat.util.http.parser.Cookie$ByteBuffer,org.apache.tomcat.util.http.ServerCookies,int)>
<org.apache.tomcat.util.net.AbstractEndpoint: void reloadSslHostConfigs()>
<org.apache.tomcat.util.net.AbstractEndpoint: int getAcceptCount()>
<org.apache.tomcat.util.net.AbstractEndpoint: void setDomain(java.lang.String)>
<org.apache.tomcat.util.net.AbstractEndpoint: void reloadSslHostConfig(java.lang.String)>
<org.apache.tomcat.util.net.AbstractEndpoint: org.apache.tomcat.util.net.SSLHostConfig removeSslHostConfig(java.lang.String)>
<org.apache.tomcat.util.net.AbstractEndpoint: void setConnectionTimeout(int)>
<org.apache.tomcat.util.net.AbstractEndpoint: void addSslHostConfig(org.apache.tomcat.util.net.SSLHostConfig,boolean)>
<org.apache.tomcat.util.net.AbstractEndpoint: void setAcceptCount(int)>
<org.apache.tomcat.util.net.AbstractEndpoint: void setConnectionLinger(int)>
<org.apache.tomcat.util.net.AbstractEndpoint: int getConnectionLinger()>
<org.apache.tomcat.util.net.AbstractEndpoint: void unregisterJmx(org.apache.tomcat.util.net.SSLHostConfig)>
<org.apache.tomcat.util.net.AbstractEndpoint: java.lang.String getDomain()>
<org.apache.tomcat.util.net.AbstractEndpoint: void registerJmx(org.apache.tomcat.util.net.SSLHostConfig)>
<org.apache.tomcat.util.net.AbstractEndpoint: int getConnectionTimeout()>
<org.apache.tomcat.util.net.AbstractJsseEndpoint: javax.net.ssl.SSLEngine createSSLEngine(java.lang.String,java.util.List,java.util.List)>
<org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper: int getSSLInfoI(int)>
<org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper: byte[] getSSLInfoB(int)>
<org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper: java.lang.String getSSLInfoS(int)>
<org.apache.tomcat.util.net.AprSSLSupport: void (org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper,java.lang.String)>
<org.apache.tomcat.util.net.NioEndpoint: java.util.concurrent.CountDownLatch getStopLatch()>
<org.apache.tomcat.util.net.NioEndpoint: void access$400(org.apache.tomcat.util.net.NioEndpoint,org.apache.tomcat.util.net.NioChannel,java.nio.channels.SelectionKey)>
<org.apache.tomcat.util.net.NioEndpoint: void setStopLatch(java.util.concurrent.CountDownLatch)>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeystoreProvider()>
<org.apache.tomcat.util.net.SSLHostConfig: javax.management.ObjectName getObjectName()>
<org.apache.tomcat.util.net.SSLHostConfig: void setOpenSslConf(org.apache.tomcat.util.net.openssl.OpenSSLConf)>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeystorePassword()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateFile()>
<org.apache.tomcat.util.net.SSLHostConfig: void setRevocationEnabled(boolean)>
<org.apache.tomcat.util.net.SSLHostConfig: org.apache.tomcat.util.net.openssl.OpenSSLConf getOpenSslConf()>
<org.apache.tomcat.util.net.SSLHostConfig: boolean isCertificateVerificationDepthConfigured()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateChainFile()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeystoreFile()>
<org.apache.tomcat.util.net.SSLHostConfig: boolean getRevocationEnabled()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeyAlias()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeyPassword()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getConfigType()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.Long getOpenSslConfContext()>
<org.apache.tomcat.util.net.SSLHostConfig: void setObjectName(javax.management.ObjectName)>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeystoreType()>
<org.apache.tomcat.util.net.SSLHostConfig: java.lang.String getCertificateKeyFile()>
<org.apache.tomcat.util.net.SSLHostConfig: void setOpenSslConfContext(java.lang.Long)>
<org.apache.tomcat.util.net.SSLHostConfigCertificate: void setObjectName(javax.management.ObjectName)>
<org.apache.tomcat.util.net.SSLHostConfigCertificate: javax.management.ObjectName getObjectName()>
<org.apache.tomcat.util.net.SecureNio2Channel: void closeSilently()>
<org.apache.tomcat.util.net.SecureNioChannel: void closeSilently()>
<org.apache.tomcat.util.net.TLSClientHelloExtractor: void readAlpnExtension(java.nio.ByteBuffer,java.util.List)>
<org.apache.tomcat.util.net.TLSClientHelloExtractor: java.util.List getClientRequestedApplicationProtocols()>
<org.apache.tomcat.util.net.jsse.JSSEUtil: java.security.cert.CertPathParameters getParameters(java.lang.String,java.security.KeyStore,boolean)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: boolean access$1100(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: boolean access$200(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: org.apache.tomcat.util.net.openssl.OpenSSLSessionContext access$500(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: javax.security.cert.X509Certificate[] access$902(org.apache.tomcat.util.net.openssl.OpenSSLEngine,javax.security.cert.X509Certificate[])>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.lang.String access$1300(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$600(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.lang.String access$1202(org.apache.tomcat.util.net.openssl.OpenSSLEngine,java.lang.String)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: void (long,java.lang.String,boolean,org.apache.tomcat.util.net.openssl.OpenSSLSessionContext,boolean,boolean)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: long access$400(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: boolean access$700(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$602(org.apache.tomcat.util.net.openssl.OpenSSLEngine,java.security.cert.Certificate[])>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: java.security.cert.Certificate[] access$800()>
<org.apache.tomcat.util.net.openssl.OpenSSLEngine: javax.security.cert.X509Certificate[] access$900(org.apache.tomcat.util.net.openssl.OpenSSLEngine)>
4. Risk for jar-pair:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:org.apache.tomcat:tomcat-juli:8.5.24:
Methods that only exist in org.apache.tomcat:tomcat-juli:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile->org.apache.tomcat:tomcat-juli:8.5.24::compile]
<org.apache.juli.AsyncFileHandler: void (java.lang.String,java.lang.String,java.lang.String,int)>
<org.apache.juli.FileHandler: java.util.Date getMaxDaysOffset()>
<org.apache.juli.FileHandler: void access$200(org.apache.juli.FileHandler,java.lang.String,java.lang.Exception,int)>
<org.apache.juli.FileHandler: java.lang.String obtainDateFromPath(java.nio.file.Path)>
<org.apache.juli.FileHandler: void ()>
<org.apache.juli.FileHandler: java.nio.file.DirectoryStream access$000(org.apache.juli.FileHandler)>
<org.apache.juli.FileHandler: int access$100(org.apache.juli.FileHandler)>
<org.apache.juli.FileHandler: java.nio.file.DirectoryStream streamFilesForDelete()>
<org.apache.juli.FileHandler: java.lang.String access$300(org.apache.juli.FileHandler,java.nio.file.Path)>
<org.apache.juli.FileHandler: void (java.lang.String,java.lang.String,java.lang.String,int)>
<org.apache.juli.FileHandler: void clean()>
<org.apache.juli.WebappProperties: boolean hasLoggingConfig()>
5. Risk for jar-pair:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:org.apache.tomcat:tomcat-jni:8.5.24:
Methods that only exist in org.apache.tomcat:tomcat-jni:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile->org.apache.tomcat:tomcat-jni:8.5.24::compile]
<org.apache.tomcat.jni.SSLContext: boolean addClientCACertificateRaw(long,byte[])>
<org.apache.tomcat.jni.SSLContext: java.lang.String[] getCiphers(long)>
6. Risk for jar-pair:org.apache.tomcat.embed:tomcat-embed-core:8.5.11:org.apache.tomcat:tomcat-util:8.5.24:
a) Methods that only exist in org.apache.tomcat.embed:tomcat-embed-core:8.5.11:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat.embed:tomcat-embed-core:8.5.11::test]
<org.apache.tomcat.util.buf.UDecoder: byte convertHexDigit(byte)>
b) Methods that only exist in org.apache.tomcat:tomcat-util:8.5.24:: [nl.nlighten:tomcat_exporter_client:0.0.7-SNAPSHOT::null->org.apache.tomcat:tomcat-catalina:8.5.24::compile->org.apache.tomcat:tomcat-util:8.5.24::compile]
<org.apache.tomcat.util.ExceptionUtils: void preload()>
<org.apache.tomcat.util.buf.ByteChunk: java.lang.Object clone()>
<org.apache.tomcat.util.buf.CharChunk: java.lang.Object clone()>
<org.apache.tomcat.util.buf.MessageBytes: java.lang.Object clone()>
<org.apache.tomcat.util.buf.UDecoder: java.lang.String URLDecode(java.lang.String,java.nio.charset.Charset,boolean)>
<org.apache.tomcat.util.buf.UDecoder: java.lang.String URLDecode(java.lang.String,java.nio.charset.Charset)>
<org.apache.tomcat.util.buf.UriUtil: java.lang.String getWarSeparator()>
<org.apache.tomcat.util.compat.Jre8Compat: int jarFileRuntimeMajorVersion()>
<org.apache.tomcat.util.compat.Jre9Compat: java.lang.String getApplicationProtocol(javax.net.ssl.SSLEngine)>
<org.apache.tomcat.util.compat.Jre9Compat: java.util.jar.JarFile jarFileNewInstance(java.io.File)>
<org.apache.tomcat.util.compat.Jre9Compat: boolean jarFileIsMultiRelease(java.util.jar.JarFile)>
<org.apache.tomcat.util.compat.Jre9Compat: void disableCachingForJarUrlConnections()>
<org.apache.tomcat.util.compat.Jre9Compat: void addBootModulePath(java.util.Deque)>
<org.apache.tomcat.util.compat.Jre9Compat: void setApplicationProtocols(javax.net.ssl.SSLParameters,java.lang.String[])>
<org.apache.tomcat.util.compat.Jre9Compat: int jarFileRuntimeMajorVersion()>
<org.apache.tomcat.util.compat.JreCompat: void addBootModulePath(java.util.Deque)>
<org.apache.tomcat.util.compat.JreCompat: void disableCachingForJarUrlConnections()>
<org.apache.tomcat.util.compat.JreCompat: java.lang.String getApplicationProtocol(javax.net.ssl.SSLEngine)>
<org.apache.tomcat.util.compat.JreCompat: boolean jarFileIsMultiRelease(java.util.jar.JarFile)>
<org.apache.tomcat.util.compat.JreCompat: java.util.jar.JarFile jarFileNewInstance(java.lang.String)>
<org.apache.tomcat.util.compat.JreCompat: int jarFileRuntimeMajorVersion()>
<org.apache.tomcat.util.compat.JreCompat: java.util.jar.JarFile jarFileNewInstance(java.io.File)>
<org.apache.tomcat.util.compat.JreCompat: void setApplicationProtocols(javax.net.ssl.SSLParameters,java.lang.String[])>
<org.apache.tomcat.util.security.PrivilegedSetTccl: void (java.lang.Thread,java.lang.ClassLoader)>