2017-03-10 60 views
3

我的应用程序部署在Tomcat 8.0.36和JDK 1.8.0_111上,工作正常。在将Tomcat升级到8.0.41和JDK 1.8.0_121后,部署失败并报告此错误。此外,只有在战争部署时未爆炸的情况下,我才会收到以下错误。如果我将unpackWAR设置为true,那么战争将成功部署。由于此客户端服务器,unpackWARs不能设置为true。所以我需要一个解决方案来部署战争而不爆炸它。未爆炸的战争导致Apache Tomcat 8.0.41中的部署失败

16:39:12.653 [localhost-startStop-1] WARN o.s.c.i.s.PathMatchingResourcePatternResolver - Cannot search for matching files underneath URL [war:file:/C:/Users/user123/apache-tomcat-8.0.41/webapps/project.war*/WEB-INF/classes/package-path/] because it does not correspond to a directory in the file system 
java.io.FileNotFoundException: URL [war:file:/C:/Users/user123/apache-tomcat-8.0.41/webapps/project.war*/WEB-INF/classes/package-path/] cannot be resolved to absolute file path because it does not reside in the file system: war:file:/C:/Users/user123/apache-tomcat-8.0.41/webapps/project.war*/WEB-INF/classes/package-path/ 
     at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:218) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.core.io.UrlResource.getFile(UrlResource.java:212) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.doFindPathMatchingFileResources(PathMatchingResourcePatternResolver.java:607) [spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.web.context.support.ServletContextResourcePatternResolver.doFindPathMatchingFileResources(ServletContextResourcePatternResolver.java:92)[spring-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:420) [spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:274) [spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1269) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.buildDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:523) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.readPersistenceUnitInfos(DefaultPersistenceUnitManager.java:503) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.preparePersistenceUnitInfos(DefaultPersistenceUnitManager.java:440) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.afterPropertiesSet(DefaultPersistenceUnitManager.java:424) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:310) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) [spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) [spring-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) [spring-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853) [catalina.jar:8.0.41] 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) [catalina.jar:8.0.41] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) [catalina.jar:8.0.41] 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753) [catalina.jar:8.0.41] 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729) [catalina.jar:8.0.41] 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.41] 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940) [catalina.jar:8.0.41] 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816) [catalina.jar:8.0.41] 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_71] 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_71] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_71] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_71] 
     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_71] 
+0

几分钟前有完全相同的问题。发现这个https://tomcat.apache.org/migration-8.html#Deployment,现在最有可能重新配置为unpackWAR =“true”,并测试并希望最好的 – Jan

+0

通过设置unpackWAR = true,部署成功我在上面提到过。如果它设置为false,则会发生我的问题。 – user3275391

+0

同样在这里 - 但运行解压缩已在tomcat中重写,所以直接从战争中直接运行的大部分原因已经过时 - 查看链接中的详细信息。 – Jan

回答

0

得到了同样的问题,根据提交一个bug报告GitHub上的问题是tomcat的版本: https://github.com/spring-projects/spring-boot/issues/7949

可能的解决办法这在我的情况下完美工作,是不是把war文件到你的tomcat目录,那里已经手动解包战争(或设置tomcat解压属性为真)

更新: 对不起,没有得到你的问题,一开始。总而言之,在阅读与这个bug相关的邮件列表之后,似乎没有其他办法可以解决这个问题。

0

您可以:

  1. 明确定义所有那些类强麦从战争项目加载<bean class="..."/>。 (而不是<context:component-scan base-package="..."/>)。请注意,这也可能会提高性能。 奇怪的是,组件扫描对于从另一个.jar项目加载的bean起作用,这是一个更深层次的服务层 - 问题在于bean级别的问题。
  2. 升级到较新的春天库版本(V 4.3.10不吃亏的问题)
  3. 部署爆炸战争目录,而不是一个压缩的.war文件。但是,根据部署方式的不同,您的应用可能会意外失败。