我正在尝试创建一个Spring Boot项目。
的pom.xml:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java</groupId>
<artifactId>spring-boot-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Java Spring Boot Example</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
</project>
SpringBootExample.java:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootExample {
public static void main(String[] args) {
SpringApplication.run(SpringBootExample.class, args);
}
}
当尝试将上述类作为Java应用程序执行时,我收到错误:
2017-06-21 17:07:14.125 ERROR 7860 --- [main] o.s.b.f.s.DefaultListableBeanFactory:在bean上销毁名为&#39; org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory&#39;抛出异常
java.lang.IllegalStateException:ApplicationEventMulticaster未初始化 - 调用&#39;刷新&#39;在通过上下文组播事件之前:org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@63f509:启动日期[Wed Jun 21 17:07:06 EDT 2017];上下文层次结构的根 在org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:404)[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253)〜[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:954)[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:961)[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1033)[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:555)[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:315)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在SpringBootExample.main(SpringBootExample.java:12)[classes /:na]
2017-06-21 17:07:14.130 ERROR 7860 --- [main] o.s.boot.SpringApplication:应用程序启动失败
org.springframework.beans.factory.BeanDefinitionStoreException:无法解析配置类[SpringBootExample];嵌套异常是org.springframework.context.annotation.ConflictingBeanDefinitionException:注释指定的bean名称&#39; errorPageFilter&#39; for bean class [org.springframework.boot.web.support.ErrorPageFilter]与同名和类的现有非兼容bean定义冲突[org.springframework.boot.context.web.ErrorPageFilter] 在org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:180)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:324)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:246)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270)~ [spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)~ [spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:315)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)[spring-boot-1.4.2.RELEASE.jar:1.4.2.RELEASE] 在SpringBootExample.main(SpringBootExample.java:12)[classes /:na] 引起:org.springframework.context.annotation.ConflictingBeanDefinitionException:注释指定的bean名称&#39; errorPageFilter&#39; for bean class [org.springframework.boot.web.support.ErrorPageFilter]与同名和类的现有非兼容bean定义冲突[org.springframework.boot.context.web.ErrorPageFilter] 在org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:320)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:259)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:137)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:268)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:230)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:197)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:166)〜[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE] ...省略了13个常见帧
答案 0 :(得分:4)
尝试添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
或者如果你已经对它发表评论(在这种情况下我使用的是intellij调试按钮配置)这个项目准确(GitHub petClinicSpringBoot)
<!--<scope>provided</scope>-->
答案 1 :(得分:2)
我添加了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
到webapp项目,它现在有效。这是在官方guide之后打包可执行jar和war文件的步骤的一部分。因此,请务必完成所有必要的步骤。
答案 2 :(得分:1)
在我的情况下,我想将war文件部署到tomcat,所以我设置了spring-boot-stater-tomcat的范围,这意味着项目将使用tomcat的依赖。因此,当您返回在计算机上运行时,这将导致错误。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
***<scope>provided</scope>***[don't need]
</dependency>