2017-03-27 45 views
2

私はSpringBootアプリケーションを構築しようとしています。コンポーネントの開始に失敗しました[StandardEngine [Tomcat] .StandardHost [Localhost] .TomcatEmbeddedContext []]

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); 
     } 
    } 

しかし、私はアプリを実行しようとすると、それは私に次のエラーがスローされます、次のように

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 

私の現在の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>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> 

述べたように一部ではSOの投稿を削除しました(ジャージー)、(埋め込みのTomcat)依存関係を追加しました。しかし、このエラーは変更に影響していないようです。

私も試してみました春のチュートリアル(2つの数値を追加する)から別の単純なプロジェクト(アプリ)が、これは次の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> 

を持ってこれは完全に正常に動作します。なぜこれが当てはまるのかの指針は何ですか?

+0

を確認してくださいあなたは、互換性のない 'サーブレットを持っています依存関係リスト 'javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;'の-api.jar'を参照してください。私はあなたがバージョン3.xを持っていると思いますが、あなたは2.1が必要です – Jens

+0

バージョン3.0.1の** javax.servlet **を内部的に使用する別のライブラリを使用します。私は、ライブラリ ' \t \t \t のjavax.servlet に追加' のjavax.servlet サーブレットAPI 2.2 'とも私のpom.xmlファイルを変更しました\t \t javax。サーブレット-api \t '。しかし、エラーはまだ同じです。 – Betafish

+0

libが使用されている依存関係を調べる – Jens

答えて

1

ur classpathに互換性のないServlet APIがあるようです。 これはJerseyジャーに依存していた可能性があります。 スプリング・ブート・スターターからジャージー・スターターを引っ張ってみてください。

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

これにより、正しいバージョンがクラスパスに表示されます。

0

私は同じ問題を抱えていましたが、以下のコメントの後に修正されました。次の依存関係の1つは、犯人でした。

<!-- dependency> 
    <groupId>me.fhir</groupId> 
    <artifactId>fhir</artifactId> 
    <version>0.12.0-RELEASE</version> 
</dependency--> 
<!-- dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.8.8</version> 
</dependency--> 
<!-- dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.8.8</version> 
</dependency--> 
0

私の推測では、あなたは、EclipseのSpring Boot Project template内で提供されるデフォルトServletInitializerクラスを使用する必要があります。 Spring Boot Starter Projectテンプレートで指定されているあなたはServletInitializerクラスを使用していない場合

//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); 
    } 

} 

、アプリのクラス

public class App extends SpringBootServletInitializer 

からSpringBootServletInitializerを拡張しようとする同様の答えhere

関連する問題