it-swarm.com.de

Fehler beim Startvorgang: Java.lang.NoSuchMethodError: org.Apache.Tomcat.util.scan.StandardJarScanner.setJarScanFilter

Derzeit schreibe ich ein API-Backend mit Spring, das ich mithilfe von Spring Boot auf einem Produktionsserver bereitstellen möchte.

Wenn ich das Backend in Eclipse mit einem Krieg (in Maven angegeben) und mit Tomcat 7 kompiliere, läuft es problemlos.

Da ich jedoch auf dem Server bereitstellen möchte, verwende ich Spring Boot.

Application.Java

package com.ninjasquare.server;

import Java.util.Arrays;

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

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            ApplicationContext ctx = SpringApplication.run(Application.class, args);

            System.out.println("NinjaSquare server up and running with Spring Boot!");

            System.out.println("Let's inspect the beans provided by Spring Boot:");

            String[] beanNames = ctx.getBeanDefinitionNames();
            Arrays.sort(beanNames);
            for (String beanName : beanNames) {
                System.out.println(beanName);
            }

        }

}

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ninjasquare</groupId>
    <artifactId>NinjaSquareServer</artifactId>
    <!-- Server Deployment Change Required: 1. Change war to jar -->
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <!-- Spring Boot related config -->

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.3.RELEASE</version>
    </parent>

    <properties>
    <Java-version>1.7</Java-version>
    <!-- Note: By default Spring Boot uses Tomcat 8. We set this so we can use Tomcat 7. -->
    <!-- <Tomcat.version>7.0.59</Tomcat.version> -->
    <!-- <org.springframework-version>4.1.6.RELEASE</org.springframework-version> -->

    <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
    <jersey.version>1.8</jersey.version>
    <org.springframework.data.version>2.2.0.RELEASE</org.springframework.data.version>
    <org.springframework.spring-test>2.5</org.springframework.spring-test>
    <log4j.version>1.2.15</log4j.version>
    <javax.inject.version>1</javax.inject.version>
    <javax.servlet.version>3.0.1</javax.servlet.version>
    <javax.servlet.jsp.version>2.1</javax.servlet.jsp.version>
    <javax.servlet.jstl.version>1.2</javax.servlet.jstl.version>

    <spring-social-facebook-version>1.1.1.RELEASE</spring-social-facebook-version>

    <junit.version>4.4</junit.version>
    <cglib.version>2.2.2</cglib.version>
    <org.hibernate.version>4.3.1.Final</org.hibernate.version>
    <com.github.jsimone.version>7.0.22.3</com.github.jsimone.version>
    <org.neo4j.app.version>1.8.2</org.neo4j.app.version>
    <spring-data-neo4j.version>2.0.1.RELEASE</spring-data-neo4j.version>
    <maven-Eclipse-plugin.version>2.9</maven-Eclipse-plugin.version>
    <org.Apache.maven.plugins.version>2.5.1</org.Apache.maven.plugins.version>
    <org.codehaus.mojo>1.2.1</org.codehaus.mojo>
    <org.Apache.maven.plugins.maven-dependency-plugin>2.4</org.Apache.maven.plugins.maven-dependency-plugin>
    <org.Apache.maven.plugins.maven-surefire-plugin>2.6</org.Apache.maven.plugins.maven-surefire-plugin>
</properties>

<dependencies>
    <!-- Server Deployment Change Required: 2. Include our custom JAR. For now, patch this code on the server manually.
    Note: This JAR needs to be installed with maven install:install-file on the server -->
    <!-- 
    <dependency>
        <groupId>com.ninjasquare.common</groupId>
        <artifactId>ninjasquarecommon</artifactId>
        <version>0.01</version>
    </dependency>
     -->

    <!--  Spring Boot dependency -->

    <!-- Import dependency management from Spring Boot -->
    <!-- 
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.2.3.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    -->

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

    <!--  Was this code missing before? -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>el-impl</artifactId>
        <version>2.2</version>
    </dependency>

    <!-- Jackson/Jersey deps -->
    <dependency>
        <groupId>com.Sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>${jersey.version}</version>
    </dependency>

    <dependency>
        <groupId>com.Sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey.version}</version>
    </dependency>

    <dependency>
        <groupId>com.Sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>${jersey.version}</version>
    </dependency>

    <!-- SDN -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <!-- <version>${org.springframework.data.version}</version> -->
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <!-- <version>${org.springframework.spring-test}</version> -->
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <!-- <version>${org.springframework-version}</version> -->
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <!-- <version>${org.springframework-version}</version> -->
    </dependency>

    <!-- AspectJ -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <!-- <version>${org.aspectj-version}</version> -->
    </dependency>

    <!-- Logging -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <!-- <version>${log4j.version}</version> -->
        <exclusions>
            <exclusion>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.Sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.Sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- @Inject -->
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>${javax.inject.version}</version>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <!-- <version>${javax.servlet.version}</version> -->
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>${javax.servlet.jsp.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <!-- <version>${javax.servlet.jstl.version}</version> -->
    </dependency>

    <!--  Import Spring Social libraries -->
    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-facebook</artifactId>
        <!-- <version>${spring-social-facebook-version}</version> -->
    </dependency>

    <!-- additional libraries required by neo/spring... -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <!-- <version>${junit.version}</version> -->
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>${cglib.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <!-- <version>${org.hibernate.version}</version> -->
    </dependency>


    <!-- execute immediately support... -->
    <dependency>
        <groupId>com.github.jsimone</groupId>
        <artifactId>webapp-runner</artifactId>
        <version>${com.github.jsimone.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.Sun.jersey.contribs</groupId>
        <artifactId>jersey-spring</artifactId>
        <version>${jersey.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <version>${org.neo4j.app.version}</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <classifier>static-web</classifier>
        <version>${org.neo4j.app.version}</version>
    </dependency>

            <!--        
            <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j-rest</artifactId>
        <version>${spring-data-neo4j.version}</version>
    </dependency> -->

    <dependency>
        <groupId>org.simpleframework</groupId>
        <artifactId>simple-xml</artifactId>
        <version>2.7</version>
    </dependency>

</dependencies>
<build>
    <plugins>
        <!-- Plugin for Spring Boot Maven -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-Eclipse-plugin</artifactId>
            <!-- <version>${maven-Eclipse-plugin.version}</version> -->
            <configuration>
                <additionalProjectnatures>
                    <projectnature>org.springframework.ide.Eclipse.core.springnature</projectnature>
                </additionalProjectnatures>
                <additionalBuildcommands>
                    <buildcommand>org.springframework.ide.Eclipse.core.springbuilder</buildcommand>
                </additionalBuildcommands>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <!-- <version>${org.Apache.maven.plugins.version}</version> -->
            <configuration>
                <source>${Java-version}</source>
                <target>${Java-version}</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <!-- <version>${org.codehaus.mojo}</version> -->
            <configuration>
                <mainClass>org.test.int1.Main</mainClass>
            </configuration>
        </plugin>
        <!-- enable execution environment... -->
        <!-- <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${org.Apache.maven.plugins.maven-dependency-plugin}</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.github.jsimone</groupId>
                                <artifactId>webapp-runner</artifactId>
                                <version>${com.github.jsimone.version}</version>
                                <destFileName>webapp-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin> -->

        <!-- get Spring, Maven & JUnit test working... -->
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- <version>${org.Apache.maven.plugins.maven-surefire-plugin}</version> -->
            <dependencies>
                <dependency>
                    <groupId>org.Apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>${org.Apache.maven.plugins.maven-surefire-plugin}</version>
                </dependency>
            </dependencies>
            <configuration>
                <includes>
                    <include>**/testcases/*.class</include>
                </includes>
            </configuration>
        </plugin>

    </plugins>
</build>
</project>

Wenn ich das gesamte Projekt auf meinen Linux-Server kopiere und maven package ausführte, wird der Code ohne Probleme kompiliert. Wenn ich dann die generierte JAR-Datei mit Java -jar [Name der Datei] ausführen, erhalte ich die folgende Fehlermeldung:

09:17:26.946 [main] ERROR o.s.boot.SpringApplication - Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is Java.lang.NoSuchMethodError: org.Apache.Tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/Apache/Tomcat/JarScanFilter;)V
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:133) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:474) ~[spring-context-4.1.6.RELEASE.jar!/:4.1.6.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:118) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:686) [spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:320) [spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:957) [spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:946) [spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at com.ninjasquare.server.Application.main(Application.Java:13) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT]
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57) ~[na:1.7.0_75]
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43) ~[na:1.7.0_75]
    at Java.lang.reflect.Method.invoke(Method.Java:606) ~[na:1.7.0_75]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.Java:53) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT]
    at Java.lang.Thread.run(Thread.Java:745) [na:1.7.0_75]
Caused by: Java.lang.NoSuchMethodError: org.Apache.Tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/Apache/Tomcat/JarScanFilter;)V
    at org.springframework.boot.context.embedded.Tomcat.SkipPatternJarScanner$Tomcat8TldSkipSetter.setSkipPattern(SkipPatternJarScanner.Java:106) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.Tomcat.SkipPatternJarScanner.setPatternToTomcat8SkipFilter(SkipPatternJarScanner.Java:61) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.Tomcat.SkipPatternJarScanner.<init>(SkipPatternJarScanner.Java:56) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.Tomcat.SkipPatternJarScanner.apply(SkipPatternJarScanner.Java:87) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.prepareContext(TomcatEmbeddedServletContainerFactory.Java:168) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:154) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:157) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:130) ~[spring-boot-1.2.3.RELEASE.jar!/:1.2.3.RELEASE]
    ... 13 common frames omitted

Ich denke, das Problem ist, dass ich nicht die richtigen Spring/Spring Boot-Versionen habe (vielleicht versucht es, eine falsche Tomcat-Version zu verwenden, sodass die Methode nicht existiert?)

Update 2015-04-06: Ich habe den Vorschlag von kucing_terbang zur Verwendung von Spring Boot v1.1.10 ausprobiert.

[Stacktrace deleted, as out of space for stackoverflow question, refer to stacktrace of v1.1.12.RELEASE below]

Update 2015-04-07: Ich habe es dann mit v1.1.12.RELEASE versucht, was zu ähnlichen Fehlern führte:

07:41:29.917 [main] INFO  o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
07:41:29.949 [main] WARN  o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:124) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:476) ~[spring-context-4.0.9.RELEASE.jar!/:4.0.9.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:109) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:691) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:320) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:952) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:941) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at com.ninjasquare.server.Application.main(Application.Java:13) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:na]
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57) ~[na:1.7.0_75]
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43) ~[na:1.7.0_75]
    at Java.lang.reflect.Method.invoke(Method.Java:606) ~[na:1.7.0_75]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.Java:53) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:na]
    at Java.lang.Thread.run(Thread.Java:745) [na:1.7.0_75]
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.Java:174) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:147) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:121) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    ... 13 common frames omitted

07:41:29.952 [main] ERROR o.s.boot.SpringApplication - Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:124) ~[spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:476) ~[spring-context-4.0.9.RELEASE.jar!/:4.0.9.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:109) ~[spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:691) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:320) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:952) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:941) [spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at com.ninjasquare.server.Application.main(Application.Java:13) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:na]
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57) ~[na:1.7.0_75]
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43) ~[na:1.7.0_75]
    at Java.lang.reflect.Method.invoke(Method.Java:606) ~[na:1.7.0_75]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.Java:53) [NinjaSquareServer-0.0.1-SNAPSHOT.jar!/:na]
    at Java.lang.Thread.run(Thread.Java:745) [na:1.7.0_75]
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.Java:174) ~[spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:147) ~[spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:121) ~[spring-boot-1.1.12.RELEASE.jar!/:1.1.12.RELEASE]
    ... 13 common frames omitted

Ich habe dann erneut ein mvn clean und ein mvn-Paket ausprobiert, das mir beim Kompilieren den folgenden Fehler gab:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[6,46] cannot find symbol
  symbol:   class SpringBootApplication
  location: package org.springframework.boot.autoconfigure
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[9,2] cannot find symbol
  symbol: class SpringBootApplication
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[6,46] cannot find symbol
  symbol:   class SpringBootApplication
  location: package org.springframework.boot.autoconfigure
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[9,2] cannot find symbol
  symbol: class SpringBootApplication
[INFO] 4 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.839s
[INFO] Finished at: Tue Apr 07 07:31:41 BST 2015
[INFO] Final Memory: 24M/63M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project NinjaSquareServer: Compilation failure: Compilation failure:
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[6,46] cannot find symbol
[ERROR] symbol:   class SpringBootApplication
[ERROR] location: package org.springframework.boot.autoconfigure
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[9,2] cannot find symbol
[ERROR] symbol: class SpringBootApplication
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[6,46] cannot find symbol
[ERROR] symbol:   class SpringBootApplication
[ERROR] location: package org.springframework.boot.autoconfigure
[ERROR] /home/dengke/test_garden/NinjaSquareServer-DS-ServerDeploymentPOC-2015-04-04/src/main/Java/com/ninjasquare/server/Application.Java:[9,2] cannot find symbol
[ERROR] symbol: class SpringBootApplication
[ERROR] -> [Help 1]

Wenn ich jedoch v1.2.3.RELEASE verwende, bekomme ich den Kompilierungsfehler nicht, und wenn ich dann zu v1.1.12.RELEASE wechsle und das mvn-Paket ohne Bereinigung ausführt, erhalte ich den Fehler auch nicht (aber ich bekomme die Fehler beim Laufen wie bisher).

Vielleicht deutet dies auf ein tieferes Problem hin?

Jede Hilfe zu diesem Thema wäre sehr dankbar.

Vielen Dank!

9
Coder Shark

Ich habe versucht, Ihren Code in meinem lokalen PC auszuführen, und es ist ein Fehler ähnlich dem aufgetreten, der an Ihrer Stelle passiert ist. Und das sind die Schritte, die ich unternommen habe, um diese Fehler zu beseitigen.

  1. Aktualisieren Sie die Version der Federstiefel

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.12.RELEASE</version>
    </parent>
    
  2. Aktualisieren Sie Ihre Hauptklasse, da die @SpringBootApplication-Annotation erst nach der Spring-Boot-Version 1.2.0 vorhanden ist

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan
    public class Application {
         public static void main(String[] args) {
                ApplicationContext ctx = SpringApplication.run(Application.class, args);
    
                System.out.println("NinjaSquare server up and running with Spring Boot!");
                System.out.println("Let's inspect the beans provided by Spring Boot:");
    
                String[] beanNames = ctx.getBeanDefinitionNames();
                Arrays.sort(beanNames);
                for (String beanName : beanNames) {
                    System.out.println(beanName);
                }
            }
    }
    
  3. Entfernen Sie die "webapp-runner" - Abhängigkeit von pom.xml, da diese Bibliothek auch die Klasse org.Apache.catalina.core.StandardContext hat, die mit der eingebetteten Tomcat-Bibliothek in Konflikt steht.

    <dependency>
        <groupId>com.github.jsimone</groupId>
        <artifactId>webapp-runner</artifactId>
        <version>${com.github.jsimone.version}</version>
        <scope>provided</scope>
    </dependency>
    

    Ja, entferne diese Zeilen;)

  4. Führen Sie die Anwendung aus und profitieren Sie dann davon.

6
kucing_terbang

Ich hatte genau das gleiche Problem mit Spring boot und dem embedded Tomcat server.

Wie habe ich es behoben?

Nach vielen Stunden von hit und trial, lief und erneut ausgeführt, stellte ich fest, dass zunächst meinem lokalen [...] Tomcat-Server mein Projekt hinzugefügt hatte, das einen Konflikt mit diesem hatte der eingebettete Tomcat-Server, den Spring Boot bereitstellt. Nach dem Entfernen des Tomcat-Servers aus dem Build-Pfad der Projekte lief Spring Boot wie ein Zauber. 

Klicken Sie einfach mit der rechten Maustaste auf das Projekt 

Build Path --> Configure Build Path --> Libraries(Tab)

und entfernen Sie Ihre Tomcat-Serverlaufzeit, falls Sie versehentlich eine hinzugefügt haben. Du solltest jetzt gut sein.

25
Abdullah Khan

Ich habe die Fehlermeldung erhalten, weil ich einige JAR-Dateien aus dem lib-Ordner von Tomcat in den lib-Ordner von jdk kopiert habe. Es gibt also eine inkompatible Version von Tomcat im Klassenpfad. Ich habe dieses Problem behoben, nachdem ich jdk neu installiert hatte.

0
Green Lei

Aktualisieren Sie die Spring Boot-Version

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.1.12.RELEASE</version>
</parent>
0
Noureldin Fawzy

Ich hatte diesen Fehler, weil ich ein Maven-Projekt mit dem Archetype webapp erstellt hatte.

Durch das Wiederherstellen des Projekts als einfaches Maven-Projekt wurde dieses Problem behoben.

0
Ahatius

Ich hatte meinen Fehler behoben, indem ich Apache Tomcat Version 9 auf Version 8.5 umstellte, die nicht von Spring Boot 1.5 unterstützt wurde

0
Pasang