복붙노트

[SPRING] 스프링 부트 오류 : java.lang.NoSuchMethodError : org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter

SPRING

스프링 부트 오류 : java.lang.NoSuchMethodError : org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter

현재 Spring Boot를 사용하여 프로덕션 서버에 배포하려는 Spring을 사용하여 API 백엔드를 작성 중입니다.

내가 Maven에서 지정한 war로 컴파일하는 Eclipse에서 백엔드를 실행하고 Tomcat 7을 사용하면 문제없이 실행된다.

그러나 서버에 배포하려면 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.hml

<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>

전체 프로젝트를 내 리눅스 서버에 복사하고 maven 패키지를 실행하면 문제없이 코드가 컴파일됩니다. 그런 다음 생성 된 jar 파일을 java -jar [파일 이름]과 함께 실행하면 다음 오류가 발생합니다.

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

나는 봄 / 봄 부팅의 올바른 버전을 가지고 있지 않기 때문에 문제가 있다고 생각한다. (아마 잘못된 버전의 Tomcat을 사용하려고 시도하고 있기 때문에 메소드가 존재하지 않는다.)

업데이트 2015-04-06 : 봄 부팅 v1.1.10을 사용하는 kucing_terbang의 제안을 시도했지만 이제 다음과 같은 오류가 발생합니다.

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

업데이트 2015-04-07 : 다음 비슷한 오류를 준 v1.1.12.RELEASE로 시도 :

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

나는 mvn clean과 mvn 패키지를 다시 시도했는데 컴파일시에 다음과 같은 에러가 발생했다.

[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]

그러나 v1.2.1.RELEASE를 사용하면 컴파일 오류가 발생하지 않으며 v1.1.12.RELEASE로 변경하고 clean없이 mvn 패키지를 실행하면 오류가 발생하지 않습니다 (그러나 이전과 같이 jar를 실행할 때 오류가 발생 함).

아마도 이것은 더 깊은 문제를 나타내는 것일까?

이 문제에 대한 도움을 많이 주시면 감사하겠습니다.

감사!

해결법

  1. ==============================

    1.내 로컬 PC에서 코드를 실행하려고했는데 어떤 오류가 발생했는지와 비슷한 오류가 발생했습니다. 그리고, 이러한 오류를 제거하기 위해 수행 한 단계입니다.

    내 로컬 PC에서 코드를 실행하려고했는데 어떤 오류가 발생했는지와 비슷한 오류가 발생했습니다. 그리고, 이러한 오류를 제거하기 위해 수행 한 단계입니다.

  2. ==============================

    2.스프링 부트와 임베디드 톰캣 서버와 똑같은 문제가있었습니다.

    스프링 부트와 임베디드 톰캣 서버와 똑같은 문제가있었습니다.

    몇 시간 동안의 재판과 재판을 거친 후 재실행하고 실행 한 결과, 처음에는 로컬 Tomcat 서버를 내 프로젝트에 추가했는데, 이는 Spring Boot가 제공하는 임베디드 Tomcat 서버와 충돌합니다. Spring Boot를 실행하는 프로젝트 빌드 경로에서 Tomcat Server를 제거한 후에는 매력과 같았습니다.

    프로젝트를 마우스 오른쪽 버튼으로 클릭하기 만하면됩니다.

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

    실수로 Tomcat 서버 런타임을 추가 한 경우 Tomcat 서버 런타임을 제거하십시오. 당신은 지금 가야 좋다.

  3. ==============================

    3.webapp archetype을 사용하여 Maven 프로젝트를 만들었 기 때문에이 오류가 발생했습니다.

    webapp archetype을 사용하여 Maven 프로젝트를 만들었 기 때문에이 오류가 발생했습니다.

    프로젝트를 단순한 Maven 프로젝트로 재창조하면이 문제가 해결됩니다.

  4. ==============================

    4.Tomcat의 lib 폴더에서 jdk의 lib 폴더로 jar 파일을 복사했기 때문에 오류가 발생했습니다. 호환되지 않는 버전의 Tomcat이 클래스 경로에 있습니다. jdk를 재설치 한 후이 문제를 해결했습니다.

    Tomcat의 lib 폴더에서 jdk의 lib 폴더로 jar 파일을 복사했기 때문에 오류가 발생했습니다. 호환되지 않는 버전의 Tomcat이 클래스 경로에 있습니다. jdk를 재설치 한 후이 문제를 해결했습니다.

  5. ==============================

    5.아파치 톰캣 버전 9를 스프링 부트 1.5가 지원하지 않는 버전 8.5로 바꾸어서 오류를 해결했다.

    아파치 톰캣 버전 9를 스프링 부트 1.5가 지원하지 않는 버전 8.5로 바꾸어서 오류를 해결했다.

  6. from https://stackoverflow.com/questions/29444650/spring-boot-error-java-lang-nosuchmethoderror-org-apache-tomcat-util-scan-stan by cc-by-sa and MIT license