it-swarm.com.de

Fehler beim Starten der Komponente [StandardEngine [Tomcat] .StandardHost [localhost] .TomcatEmbeddedContext []]

Ich versuche, eine SpringBoot-Anwendung zu erstellen.

 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ApplicationContext;

    @SpringBootApplication
    public class App {

        @SuppressWarnings("unused")
        public static void main(String[] args) throws Exception {
            ApplicationContext ctx = SpringApplication.run(App.class, args);
        }
    }

Aber wenn ich versuche, die App auszuführen, wird mir der folgende Fehler angezeigt:

2017-03-27 13:55:58.281  INFO 8608 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-03-27 13:55:58.299  INFO 8608 --- [           main] o.Apache.catalina.core.StandardService   : Starting service Tomcat
2017-03-27 13:55:58.302  INFO 8608 --- [           main] org.Apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.11
2017-03-27 13:55:58.554 ERROR 8608 --- [cat-startStop-1] org.Apache.catalina.core.ContainerBase   : A child container failed during start

Java.util.concurrent.ExecutionException: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
    at Java.util.concurrent.FutureTask.report(FutureTask.Java:122) [na:1.8.0_73]
    at Java.util.concurrent.FutureTask.get(FutureTask.Java:192) [na:1.8.0_73]
    at org.Apache.catalina.core.ContainerBase.startInternal(ContainerBase.Java:939) ~[Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.core.StandardHost.startInternal(StandardHost.Java:872) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1419) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1409) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:266) [na:1.8.0_73]
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142) [na:1.8.0_73]
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617) [na:1.8.0_73]
    at Java.lang.Thread.run(Thread.Java:745) [na:1.8.0_73]
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:167) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    ... 6 common frames omitted
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:167) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5099) ~[Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    ... 6 common frames omitted
Caused by: org.Apache.catalina.LifecycleException: Failed to start component [org.Apache.catalina.authenticator.NonLoginAuthenticator[]]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:167) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.Java:170) ~[Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    ... 8 common frames omitted
Caused by: Java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    at org.Apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.Java:1137) ~[Tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150) [Tomcat-embed-core-8.5.11.jar:8.5.11]
    ... 10 common frames omitted

meine aktuelle pom.xml-Datei lautet wie folgt:

<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>XXXX</groupId>
  <artifactId>XXXX</artifactId>
  <version>0.0.1-SNAPSHOT</version>

<!-- JSON -->
<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

 <dependency>
   <groupId>commons-lang</groupId>
   <artifactId>commons-lang</artifactId>
   <version>2.2</version>
 </dependency>

<dependency>
   <groupId>com.Sun.jersey</groupId>
   <artifactId>jersey-client</artifactId>
   <version>1.19.3</version>
</dependency >

<dependency>
   <groupId>com.Sun.jersey</groupId>
   <artifactId>jersey-json</artifactId>
   <version>1.19.3</version>
</dependency>

<!-- REST Services  -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>  

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>

<!-- <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-Tomcat</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency> -->


  <!-- SLF4J Logging -->
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.4</version>
    <scope>compile</scope>
  </dependency>  

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.6.4</version>
    <scope>runtime</scope>
  </dependency>

  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.4</version>
    <scope>runtime</scope>
  </dependency> 

  </dependencies>

  <build>
  <sourceDirectory>src</sourceDirectory>
  <plugins>

    <!-- Set a compiler level -->
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
  </plugins>
</build>
</project>

Wie in einigen SO Posts erwähnt, habe ich versucht, (Jersey) zu entfernen und (eingebettete Tomcat) Abhängigkeiten hinzuzufügen. Der Fehler scheint sich jedoch nicht auf die Änderungen auszuwirken.

Ich habe auch ein anderes einfaches Projekt (App) aus Spring Tutorials ausprobiert (um zwei Zahlen hinzuzufügen), dieses hat die folgende 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>SpringBootDemoProject</groupId>
  <artifactId>SpringBootDemoProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>  
 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>

  </dependencies>
  <build>  
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Das funktioniert völlig in Ordnung. Gibt es Hinweise, warum dies der Fall ist?

4
Betafish

Sieht aus, als hätten Sie eine inkompatible Version der Servlet-API in ur classpath . Dies könnte eine Abhängigkeit zu Jersey-Gefäßen haben Ziehen Sie einen Jersey-Starter von Spring-Boot-Startern heraus.

org.springframework.boot : spring-boot-starter-jersey

Dadurch wird die richtige Version in Ihren Klassenpfad eingefügt.

3
Praneeth Ramesh

Meine Vermutung ist, dass Sie die Standardklasse ServletInitializer verwenden müssen, die im Spring Boot Project template von Eclipse enthalten ist.

//SpringBootApplication.Java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootApplication {

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

//ServletInitializer.Java
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootApplication.class);
    }

}

Wenn Sie die in Spring Boot Starter Project template angegebene ServletInitializer-Klasse nicht verwenden, versuchen Sie, SpringBootServletInitializer von Ihrer App-Klasse zu erweitern

public class App extends SpringBootServletInitializer

Bitte überprüfen Sie eine ähnliche Antwort hier

0

Für mich hat das Upgrade von javax.servlet-api auf 4.0.1 den Trick:

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency>

0