Jre12Compat (Apache Tomcat 9.0.111 API Documentation)
Description: declaration: package: org.apache.tomcat.util.compat, class: Jre12Compat

# Class Jre12Compat

java.lang.Object
org.apache.tomcat.util.compat.JreCompat
org.apache.tomcat.util.compat.Jre12Compat

Direct Known Subclasses:
  `Jre19Compat`

public class Jre12Compat extends JreCompat

- ## Field Summary

  ### Fields inherited from class JreCompat

  `canonCachesDisabled, canonCachesDisabledLock, getApplicationProtocolMethod, setApplicationProtocolsMethod, USE_CANON_CACHES_CMD_ARG, useCanonCachesField, useCanonCachesFieldLock`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Jre12Compat()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addBootModulePath(Deque<URL> classPathUrlsToProcess)`
  Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.
  `boolean`
  `canAccess(Object base, AccessibleObject accessibleObject)`
  Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
  `void`
  `disableCachingForJarUrlConnections()`
  Disables caching for JAR URL connections.
  `protected void`
  `ensureUseCanonCachesFieldIsPopulated()`
  `String`
  `getModuleName(Class<?> type)`
  What is the module of the given class?
  `boolean`
  `isCanonCachesDisabled()`
  `boolean`
  `isExported(Class<?> type)`
  Is the given class in an exported package?
  `boolean`
  `isInstanceOfInaccessibleObjectException(Throwable t)`
  Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.
  `boolean`
  `jarFileIsMultiRelease(JarFile jarFile)`
  Is this JarFile a multi-release JAR file.
  `JarFile`
  `jarFileNewInstance(File f)`
  Creates a new JarFile instance.
  `int`
  `jarFileRuntimeMajorVersion()`

  ### Methods inherited from class JreCompat

  `callAs, createVirtualThreadBuilder, disableCanonCaches, getApplicationProtocol, getExecutor, getInstance, getUnixDomainSocketAddress, isAlpnSupported, isGraalAvailable, isJre11Available, isJre12Available, isJre16Available, isJre19Available, isJre20Available, isJre21Available, isJre22Available, isJre9Available, jarFileNewInstance, openUnixDomainServerSocketChannel, openUnixDomainSocketChannel, setApplicationProtocols, setNamedGroupsMethod, threadBuilderStart`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Jre12Compat

    public Jre12Compat()

- ## Method Details

  - ### isCanonCachesDisabled

    public boolean isCanonCachesDisabled()
    Overrides:
      `isCanonCachesDisabled` in class `JreCompat`

  - ### ensureUseCanonCachesFieldIsPopulated

    protected void ensureUseCanonCachesFieldIsPopulated()
    Overrides:
      `ensureUseCanonCachesFieldIsPopulated` in class `JreCompat`

  - ### isInstanceOfInaccessibleObjectException

    public boolean isInstanceOfInaccessibleObjectException(Throwable t)
    Description copied from class: `JreCompat`
    Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.
    Overrides:
      `isInstanceOfInaccessibleObjectException` in class `JreCompat`
    Parameters:
      `t` - The exception to test
    Returns:
      `true` if the exception is an instance of InaccessibleObjectException, otherwise `false`

  - ### disableCachingForJarUrlConnections

    public void disableCachingForJarUrlConnections() throws IOException
    Description copied from class: `JreCompat`
    Disables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.
    Overrides:
      `disableCachingForJarUrlConnections` in class `JreCompat`
    Throws:
      `IOException` - If a dummy JAR URLConnection can not be created

  - ### addBootModulePath

    public void addBootModulePath(Deque<URL> classPathUrlsToProcess)
    Description copied from class: `JreCompat`
    Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.
    Overrides:
      `addBootModulePath` in class `JreCompat`
    Parameters:
      `classPathUrlsToProcess` - The Deque to which the modules should be added

  - ### jarFileNewInstance

    public JarFile jarFileNewInstance(File f) throws IOException
    Description copied from class: `JreCompat`
    Creates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware.
    Overrides:
      `jarFileNewInstance` in class `JreCompat`
    Parameters:
      `f` - The JAR file to open
    Returns:
      A JarFile instance based on the provided file
    Throws:
      `IOException` - If an I/O error occurs creating the JarFile instance

  - ### jarFileIsMultiRelease

    public boolean jarFileIsMultiRelease(JarFile jarFile)
    Description copied from class: `JreCompat`
    Is this JarFile a multi-release JAR file.
    Overrides:
      `jarFileIsMultiRelease` in class `JreCompat`
    Parameters:
      `jarFile` - The JarFile to test
    Returns:
      `true` If it is a multi-release JAR file and is configured to behave as such.

  - ### jarFileRuntimeMajorVersion

    public int jarFileRuntimeMajorVersion()
    Overrides:
      `jarFileRuntimeMajorVersion` in class `JreCompat`

  - ### canAccess

    public boolean canAccess(Object base, AccessibleObject accessibleObject)
    Description copied from class: `JreCompat`
    Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
    Overrides:
      `canAccess` in class `JreCompat`
    Parameters:
      `base` - The specific instance to be tested.
      `accessibleObject` - The method/field/constructor to be tested.
    Returns:
      {code true} if the AccessibleObject can be accessed otherwise {code false}

  - ### isExported

    public boolean isExported(Class<?> type)
    Description copied from class: `JreCompat`
    Is the given class in an exported package?
    Overrides:
      `isExported` in class `JreCompat`
    Parameters:
      `type` - The class to test
    Returns:
      Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+

  - ### getModuleName

    public String getModuleName(Class<?> type)
    Description copied from class: `JreCompat`
    What is the module of the given class?
    Overrides:
      `getModuleName` in class `JreCompat`
    Parameters:
      `type` - The class to test
    Returns:
      Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+