tomcat - 没有定义 SpringApplication 源。覆盖配置方法或添加 @Configuration 注释

标签 tomcat spring-boot war

我有一个 spring boot 项目,在此之前我总是将它打包成一个 jar 文件并像这样运行它:
java -jar myjar.jar
而现在我想把它转换成war包部署到tomcat中。我关注了这篇文章:
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging
但是当我试图将它部署到tomcat时,我得到了错误:

2017-02-09 17:26:05.159 [localhost-startStop-1] INFO  Service - Root context already created (using as parent).
09-Feb-2017 17:26:05.175 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test-0.0.1-SNAPSHOT]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: No SpringApplication sources have been defined. Either override the configure method or add an @Configuration annotation
        at org.springframework.util.Assert.state(Assert.java:392)
        at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:124)
        at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
        at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        ... 10 more

09-Feb-2017 17:26:05.190 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive ***\apache-tomcat-8.0.39\webapps\test-0.0.1-SNAPSHOT.war
 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test-0.0.1-SNAPSHOT]]
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:757)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

谁能帮我解决这个问题?提前致谢!

最佳答案

在我的例子中,我有两个类在 spring boot 扫描的同一个包中扩展“SpringBootServletInitializer”。即使删除其中一个类的 @SpringBootApplication 或 @ComponentScan 也不起作用。只留下一个类,编译后再次运行。

关于tomcat - 没有定义 SpringApplication 源。覆盖配置方法或添加 @Configuration 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42133503/

相关文章:

java - 提取 Tomcat Zip 有时会失败并出现 IOException : Negative seek offset

mysql - 停止/重新部署时 Tomcat 7+ 内存泄漏。 Spring Data、JPA、Hibernate、MySQL

使用 Intellij IDEA 远程部署 Tomcat

java - Spring Boot在启动api之前将数据加载到sql

java - 更改 Maven 中的默认结构以进行 war

java - 有没有办法将 mywebapp-1.0-SNAPSHOT-classes.jar 从 maven-war-plugin 中的 attachClasses 配置更改为 mywebapp-1.0-SNAPSHOT.jar?

jquery - 如何根据角色隐藏 Web 应用程序用户的选项卡

java - Spring Session with JDBC - 如何使用单独的数据库作为 session 存储

spring-boot - 如何禁用 Spring Security 的登录屏幕?

tomcat - 如何在为 Grails 应用程序生成 .WAR 之前使用 UTF-8 编码复制文件