在heroku上部署maven app,BeanDefinitionStoreException



我需要在 heroku 上上传现有的 tomcat 应用程序 - 我在部署时遇到错误 已经尝试了官方的 Heroku 教程 例外:

2018-06-04T09:54:41.843218+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.web.context.ContextLoader initWebApplicationContext
2018-06-04T09:54:41.843221+00:00 app[web.1]: INFO: Root WebApplicationContext: initialization started
2018-06-04T09:54:41.882165+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
2018-06-04T09:54:41.882168+00:00 app[web.1]: INFO: Refreshing Root WebApplicationContext: startup date [Mon Jun 04 09:54:41 UTC 2018]; root of context hierarchy
2018-06-04T09:54:41.930603+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
2018-06-04T09:54:41.930607+00:00 app[web.1]: INFO: Loading XML bean definitions from class path resource []
2018-06-04T09:54:41.933643+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.web.context.ContextLoader initWebApplicationContext
2018-06-04T09:54:41.933645+00:00 app[web.1]: SEVERE: Context initialization failed
2018-06-04T09:54:41.933647+00:00 app[web.1]: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource []; nested exce
ption is java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.933649+00:00 app[web.1]:    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
.......
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2018-06-04T09:54:41.933675+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:748)
2018-06-04T09:54:41.933677+00:00 app[web.1]: Caused by: java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.933678+00:00 app[web.1]:    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
2018-06-04T09:54:41.933679+00:00 app[web.1]:    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
2018-06-04T09:54:41.933680+00:00 app[web.1]:    ... 21 more
2018-06-04T09:54:41.933681+00:00 app[web.1]:
2018-06-04T09:54:41.934540+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext listenerStart
2018-06-04T09:54:41.934542+00:00 app[web.1]: SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
2018-06-04T09:54:41.934543+00:00 app[web.1]: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource []; nested exce
ption is java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.934545+00:00 app[web.1]:    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
2018-06-04T09:54:41.934573+00:00 app[web.1]:    ... 21 more
2018-06-04T09:54:41.934574+00:00 app[web.1]:
2018-06-04T09:54:41.935025+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext startInternal
2018-06-04T09:54:41.935028+00:00 app[web.1]: SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
2018-06-04T09:54:41.954513+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext startInternal
2018-06-04T09:54:41.954517+00:00 app[web.1]: SEVERE: Context [] startup failed due to previous errors
2018-06-04T09:54:41.955058+00:00 app[web.1]: SEVERE: Context [] failed in [org.apache.catalina.core.StandardContext] lifecycle. Allowing Tomcat to shutdown.
2018-06-04T09:54:41.956883+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.ApplicationContext log
2018-06-04T09:54:41.956886+00:00 app[web.1]: INFO: Closing Spring root WebApplicationContext
2018-06-04T09:54:41.959020+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.ApplicationContext log
2018-06-04T09:54:41.959023+00:00 app[web.1]: INFO: Shutting down log4j
2018-06-04T09:54:41.962408+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext listenerStop
2018-06-04T09:54:41.962411+00:00 app[web.1]: SEVERE: Exception sending context destroyed event to listener instance of class [org.springframework.web.util.Log4jConfigListener]
2018-06-04T09:54:41.962413+00:00 app[web.1]: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
2018-06-04T09:54:41.962434+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:748)
2018-06-04T09:54:41.962436+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager
2018-06-04T09:54:41.962437+00:00 app[web.1]:    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
2018-06-04T09:54:41.962439+00:00 app[web.1]:    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)
2018-06-04T09:54:41.962441+00:00 app[web.1]:    ... 13 more
2018-06-04T09:54:41.962442+00:00 app[web.1]:
2018-06-04T09:54:41.977491+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.coyote.AbstractProtocol start
2018-06-04T09:54:41.977495+00:00 app[web.1]: INFO: Starting ProtocolHandler ["http-nio-4299"]
2018-06-04T09:54:42.323677+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=build-e-rest-test.herokuapp.com request_id=9da46
ada-92ba-4e78-8715-21171277860b fwd="79.177.4.143" dyno=web.1 connect=0ms service=140ms status=503 bytes=0 protocol=https
2018-06-04T09:54:42.368865+00:00 heroku[web.1]: Process exited with status 0

我认为问题是由于其中一个文件的配置不正确造成的。 这是相关文件(我认为(

绒球.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>builde</groupId>
<artifactId>build-e-rest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.test.skip>true</maven.test.skip>
<maven.install.skip>true</maven.install.skip>
<maven.deploy.skip>true</maven.deploy.skip>
<beanstalk.environmentRef>build-e-rest-env.elasticbeanstalk.com</beanstalk.environmentRef>
<beanstalk.environmentName>build-e-rest-env</beanstalk.environmentName>
<beanstalk.cnamePrefix>build-e-rest-env</beanstalk.cnamePrefix>
<beanstalk.applicationName>build-e-rest</beanstalk.applicationName>
<beanstalk.useStagingDirectory>true</beanstalk.useStagingDirectory>
<beanstalker.region>us-east-1</beanstalker.region>
<!-- review src/main/webapp/.ebextensions/java7.config if you change this setting
-->
<beanstalk.solutionStack>64bit Amazon Linux running Tomcat 7</beanstalk.solutionStack>
<!-- switch to .../health/check when you set iamInstanceProfile below -->
<beanstalk.applicationHealthCheckURL>/services/api/v1/debug</beanstalk.applicationHealthCheckURL>
<beanstalk.environmentType>SingleInstance</beanstalk.environmentType>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.0.0-RC1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>./WebContent/WEB-INF/web.xml</webXml>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>8.5.31.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>testlog4j.testlog4j.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<inherited>true</inherited>
<version>1.4.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>deploy</id>
<build>
<defaultGoal>deploy</defaultGoal>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>fast-deploy</goal>
<goal>replace-environment</goal>
</goals>
</execution>
</executions>
<configuration>
<skipEnvironmentUpdate>true</skipEnvironmentUpdate>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>fast-deploy</id>
<build>
<defaultGoal>deploy</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>default-war</id>
<phase>package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>fast-deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>worker</id>
<properties>
<beanstalk.environmentRef>build-e-rest-worker</beanstalk.environmentRef>
<beanstalk.environmentName>build-e-rest-worker</beanstalk.environmentName>
<beanstalk.environmentTierName>Worker</beanstalk.environmentTierName>
<beanstalk.sqsdHttpPath>/services/api/v1/sqsd</beanstalk.sqsdHttpPath>
</properties>
</profile>
<profile>
<id>s3-deploy</id>
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<beanstalk.versionLabel>${maven.build.timestamp}</beanstalk.versionLabel>
</properties>
<build>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload-source-bundle</goal>
<goal>create-application-version</goal>
<!-- replace to replace-environment or blue-green
if you want zero downtime or blue-green -->
<goal>put-environment</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>bluegreen-s3-deploy</id>
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<beanstalk.versionLabel>${maven.build.timestamp}</beanstalk.versionLabel>
</properties>
<build>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload-source-bundle</goal>
<goal>create-application-version</goal>
<!-- replace to replace-environment or blue-green
if you want zero downtime or blue-green -->
<goal>blue-green</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

网络.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath: ../META-INF/spring/rootContext.xml
</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/builde_rest_2_0</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!--
<listener>
<listener-class>ch.qos.logback.classic.selector.servlet.ContextDetachingSCL</listener-class>
</listener>
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> 
<!-- <servlet>
<servlet-name>exporter</servlet-name>
<servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> -->

<!-- <servlet-mapping>
<servlet-name>exporter</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> -->

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>

我希望这里有人可以帮助我 谢谢。

错误行以以下内容开头:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException 从类路径资源 [] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException: 类路径资源 [] 无法打开,因为它不存在

它指出类路径资源未定义。尝试

  • 将依赖项添加到项目中。

  • 将依赖项添加到项目部署程序集。

如果这些不能解决您的问题,请尝试删除org.springframework.web.util.Log4jConfigListener,因为它可能在Maven过程中与WAR文件发生冲突。

最新更新