首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot Tomcat容器部署错误

Spring Boot Tomcat容器部署错误
EN

Stack Overflow用户
提问于 2014-12-08 15:50:43
回答 2查看 3.2K关注 0票数 0

我想将我的Spring应用程序作为WAR部署到Tomcat容器中,但是Tomcat无法启动容器。我遵循了Spring中的传统部署科文档。容器的线程大小设置为-Xss 4068,但我仍然收到堆栈溢出错误。

下面是堆栈跟踪:

代码语言:javascript
复制
Dec 08, 2014 12:01:13 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Tomcat\customer\webapps\customer-site-0.0.1-SNAPSHOT\WEB-
INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. 
Offending class: javax/servlet/Servlet.class
Dec 08, 2014 12:01:15 AM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[customers-prototype.mydomain.com].StandardContext[/customer-site-0.0.1-SNAPSHOT]]
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
  at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  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:722)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/customer-site-0.0.1-SNAPSHOT] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [com.ibm.db2.jcc.am.mf->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object]
  at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2126)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2072)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1947)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1913)
  at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1898)
  at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1330)
  at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
  at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
  at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more

Dec 08, 2014 12:01:15 AM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive C:\Tomcat\customer\webapps\customer-site-0.0.1-SNAPSHOT.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component
[StandardEngine[Catalina].StandardHost[customers-prototype.mydomain.com].StandardContext[/customer-site-0.0.1-SNAPSHOT]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
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:722)

Dec 08, 2014 12:01:15 AM org.apache.catalina.startup.HostConfig deployWAR

我的pom.xml有下面的Spring依赖项,并将spring启动器-tomcat作用域设置为提供,如文档所述。

POM.XML

代码语言:javascript
复制
    <!-- Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

更新:附加pom依赖项:

代码语言:javascript
复制
<dependency>
   <groupId>com.ibm.db2</groupId>
   <artifactId>db2jcc4</artifactId>
   <version>9.7.0.9</version>
</dependency>
<dependency>
<groupId>com.ibm.db2</groupId>
   <artifactId>db2jcc_license</artifactId>
   <version>9.7.0.9</version>
</dependency>

我的主类像文档中所描述的那样扩展了SpringBootServletInitializer:

CustomerSiteMain.java:

代码语言:javascript
复制
@Configuration
@ComponentScan("com.mydomain")
@EnableAutoConfiguration
public class CustomerMain extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
        return application
            .showBanner(true)
            .parent(Global.class)
            .sources(CustomerMain.class)
            .profiles("container");
    }

    public static void main(String[] args) {
        SpringApplication.run(CustomerMain.class, args);
    }

   @Bean
   @Profile(CustomerSiteProfiles.STANDALONE)
   public ServletRegistrationBean h2Console() {
      ServletRegistrationBean reg = new ServletRegistrationBean(new WebServlet(), "/console/*");
      reg.setLoadOnStartup(1);
      return reg;
   }

   @Bean
   public ServletRegistrationBean servletRegistrationBean(){
       return new ServletRegistrationBean(new PhotoSheetPDFServlet(), "/items/factsheet/*");
   }
}
EN

回答 2

Stack Overflow用户

发布于 2015-03-07 09:45:10

以上这些也帮助了我。我也遇到了类似的问题,并且一直得到这样的WebappClassLoader日志:

代码语言:javascript
复制
2015-03-06 20:32:53,741 org.apache.catalina.loader.WebappClassLoader   validateJarFile INFO: validateJarFile(/usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0/WEB-INF/lib/tomcat-embed-core-8.0.15.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
2015-03-06 20:32:53,742 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(/usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0/WEB-INF/lib/tomcat-embed-el-8.0.15.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class

这是我在加载web应用程序时得到的严重错误的线索。

代码语言:javascript
复制
2015-03-06 20:32:54,704 org.apache.catalina.startup.HostConfig deployWAR SEVERE: Error deploying web application archive /usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0.war

在我的例子中,我正在开发一个web服务,而在我的pom.xml中,这些依赖关系(web服务不是web)。

代码语言:javascript
复制
<dependencies>
    <!-- tag::springws[] -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-ws</artifactId>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
    </dependency>
    <!-- end::springws[] -->
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency> 
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency> 
</dependencies>

但在安装maven之前,我也忘了进行清理。这花了我几个小时,因为我的猫库还在那里。

用户请注意,当您遵循Springs、https://spring.io/guides/gs/convert-jar-to-war/http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file时,您也应该执行maven干净操作。

这对于更快的发展来说是很棒的。谢谢

票数 2
EN

Stack Overflow用户

发布于 2014-12-12 16:46:25

您的Tomcat似乎正在尝试加载一些已经加载的类。尝试从spring-boot-starter-web依赖项中排除嵌入式tomcat

代码语言:javascript
复制
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27361662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档