无法为 ServletContainerInitializers 处理在 URL [jar:file:bcprov-jdk15-1.46.jar!/] 找到的 JAR 以获取上下文
Posted
技术标签:
【中文标题】无法为 ServletContainerInitializers 处理在 URL [jar:file:bcprov-jdk15-1.46.jar!/] 找到的 JAR 以获取上下文【英文标题】:Failed to process JAR found at URL [jar:file:bcprov-jdk15-1.46.jar!/] for ServletContainerInitializers for context 【发布时间】:2014-01-01 01:52:45 【问题描述】:我有七个在 Spring 3.2 中开发的 Web 应用程序,全部基于注释。我使用 Hibernate 4.2 作为我的 ORM 框架。
我创建了一个包含所有七个战争的 tomcat 映像,并将其用于在 Amazon EC2 上的部署。
在过去的几天里,我几乎在每次部署时都遇到以下错误消息:
WARNING: Failed to scan JAR [file:/opt/progress/CloudServices/server/webapps/cs-
account/WEB-INF/lib/bcprov-jdk15-1.46.jar] from WEB-INF/lib
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.jar.JarFile.<init>(JarFile.java:135)
at java.util.jar.JarFile.<init>(JarFile.java:72)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:72)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71)
at org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:41)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34)
at org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback.scan(ContextConfig.java:2566)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:241)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:166)
at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1864)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1211)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:962)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1603)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
注意这在之前运行良好,当前的代码库可能已经添加了一个或两个以上的类。
无法理解确切的问题。任何帮助将不胜感激。
更新
当我增加分配给 JVM 的内存时,每次都可以正常工作。 另外,如果我删除了部署失败的项目的爆炸war,并在tomcat的webapps目录下重新复制war,它就可以正常工作了。
【问题讨论】:
这里有很多可能出错的地方......异常告诉你的是无法打开特定的罐子。我敢打赌 jar 文件在 Tomcat 读取时已损坏。因此,首先要尝试将 jar 解压缩到一个临时位置(例如 /tmp)。如果解压正常,请尝试重新启动 Tomcat。如果问题仍然存在,请尝试将完全相同的 webapp 部署到本地 Tomcat 实例中。真的,用这种级别的信息可以做的事情并不多...... 是的,你是对的......这种信息水平真的没有帮助......但不幸的是,我没有看到任何与提供更相关的东西......不过会尝试使用本地 tomcat 【参考方案1】:我现在遇到了类似的问题,解决方法也是增加给Tomcat的内存。
为了记录,我得到的错误是这样的:
INFO: Deploying web application archive /var/lib/tomcat7/webapps/mywar.war
Nov 26, 2014 2:52:09 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat7/webapps/mywar/WEB-INF/lib/javax.servlet-3.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Nov 26, 2014 2:52:09 PM org.apache.tomcat.util.scan.StandardJarScanner scan
WARNING: Failed to scan [file:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/pulse-java.jar] from classloader hierarchy
java.io.FileNotFoundException: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/pulse-java.jar (No such file or directory)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:215)
at java.util.zip.ZipFile.<init>(ZipFile.java:145)
at java.util.jar.JarFile.<init>(JarFile.java:154)
at java.util.jar.JarFile.<init>(JarFile.java:91)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:99)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
at org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:40)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34)
at org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback.scan(ContextConfig.java:2566)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:241)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:204)
at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1864)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1211)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Nov 26, 2014 2:52:09 PM org.apache.catalina.startup.ContextConfig processServletContainerInitializers
SEVERE: Failed to process JAR found at URL [jar:file:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/pulse-java.jar!/] for ServletContainerInitializers for context with name [/mywar]
Nov 26, 2014 2:52:09 PM org.apache.catalina.startup.ContextConfig configureStart
SEVERE: Marking this application unavailable due to previous error(s)
Nov 26, 2014 2:52:09 PM org.apache.catalina.startup.TldConfig tldScanJar
WARNING: Failed to process JAR [jar:file:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/pulse-java.jar!/] for TLD files
java.io.FileNotFoundException: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/pulse-java.jar (No such file or directory)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:215)
at java.util.zip.ZipFile.<init>(ZipFile.java:145)
at java.util.jar.JarFile.<init>(JarFile.java:154)
at java.util.jar.JarFile.<init>(JarFile.java:91)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:99)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
at org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:40)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34)
at org.apache.catalina.startup.TldConfig.tldScanJar(TldConfig.java:460)
at org.apache.catalina.startup.TldConfig.access$100(TldConfig.java:58)
at org.apache.catalina.startup.TldConfig$TldJarScannerCallback.scan(TldConfig.java:276)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:241)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:204)
at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:250)
at org.apache.catalina.startup.TldConfig.lifecycleEvent(TldConfig.java:540)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Nov 26, 2014 2:52:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
Nov 26, 2014 2:52:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/mywar] startup failed due to previous errors
pulse-java.jar 在我的系统上不存在(从来没有)。增加给 Tomact 的内存解决了这个问题。
【讨论】:
如何增加内存?以上是关于无法为 ServletContainerInitializers 处理在 URL [jar:file:bcprov-jdk15-1.46.jar!/] 找到的 JAR 以获取上下文的主要内容,如果未能解决你的问题,请参考以下文章
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端