我们有一个在Tomcat服务器容器上运行的Web应用程序。已编译Web应用程序,并使用JDK 11作为运行时JRE来执行。
Tomcat版本:-7.0.92 JDK版本:-11
问题描述:- 1.我们在tomcat日志中看到与Tomcat服务器启动时的jar扫描有关的错误。 2.通过我们的Web应用程序启动Tomcat服务器后,它将在Tools.jar中搜索以进行注释。 3.众所周知,JDK 11已停止运送/捆绑包含tools.jar的JRE,Tomcat服务器报告了以下错误: 以下:-
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)
已应用解决方案/解决方法:-在Google上发布广泛的搜索 和其他社区,我们发现建议将 应用在catalina.properties文件中,这将有助于避免 扫描所有罐子。 org.apache.catalina.startup.ContextConfig.jarsToSkip = *。jar 我们已经拥有此属性,即使这样也无法解决 这个问题。
因此,请您提供一些有关此问题的见解/工作解决方案。如果需要更多信息,请还原。
感谢您的合作!
答案 0 :(得分:3)
将您的JDK 降级到JDK 8(在JDK 9中删除了tools.jar),或者尝试升级您的tomcat版本到版本8或9。
当有其他稳定版本发布时(tomcat 7在 2011年宣布稳定!),我看不到使用旧版tomcat的原因。避免混合使用新旧技术,因为它们会彼此分开,就像您的情况一样。
tomcat的旧版本与Java的新版本不兼容。
长话短说,尝试使用tomcat 8或9。