Dear Team, We have a web application running on Tomcat server container. Web application is compiled and using JDK 11 as runtime JRE for execution purpose.
Tomcat Version : - 7.0.92 JDK Version :- 11 Problem Description :- 1.We are seeing the errors in tomcat log regarding jar scanning at time of Tomcat server startup. 2. Once Tomcat server is getting launched through our web application, it searches the Tools.jar for annotations purpose. 3. As we all know, JDK 11 has stopped shipping / bundling JRE which contains the tools.jar, Tomcat server reports an error which is following :-- *ERROR localhost-startStop-1 org.apache.catalina.startup.ContextConfig - Unable to process Jar [jar:file:/ C:/JDK11/lib/tools.jar!/] for annotations* java.nio.file.NoSuchFileException: C:\JDK11\lib\tools.jar at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:53) at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:38) at java.base/sun.nio.fs.WindowsFileSystemProvider.readAttributes(WindowsFileSystemProvider.java:194) at java.base/java.nio.file.Files.readAttributes(Files.java:1763) at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1222) at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:824) at java.base/java.util.zip.ZipFile$CleanableResource$FinalizableResource.<init>(ZipFile.java:850) at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:839) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:246) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:176) at java.base/java.util.jar.JarFile.<init>(JarFile.java:346) at java.base/sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:103) at java.base/sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:72) at java.base/sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:109) at java.base/sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:125) at java.base/sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:92) at org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:48) at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1957) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1932) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1917) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1322) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5566) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Resolution / workaround applied :- Post extensive search on Google and other community like STACKExchange, We found that a property is suggested to be applied in the catalina.properties file which would help avoiding the scanning of all the jars. *org.apache.catalina.startup.**ContextConfig.jarsToSkip=*.jar* We have this property already in place and even this has not helped resolving this issue. Therefore, we request you to kindly provide some insight / working resolution of this issue. Please revert in case any more info is required. Appreciate your co-operation ! Thanks, Ravi