복붙노트

[SPRING] java.lang.ClassNotFoundException : org.springframework.boot.SpringApplication Maven

SPRING

java.lang.ClassNotFoundException : org.springframework.boot.SpringApplication Maven

봄 mvc 응용 프로그램을 만들려고 해요. 이것은 내 pom.xml입니다.

<?xml version="1.0" encoding="UTF-8"?>
<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.acme</groupId>
    <artifactId>test</artifactId>
    <name>springmvc</name>
    <packaging>jar</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
        <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>
    </properties>

    <repositories>
        <repository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- 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>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j-version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</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>
            <scope>runtime</scope>
        </dependency>

        <!-- @Inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>

        <!-- Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>0.5.0.M6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
            <version>0.5.0.M6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>0.5.0.M6</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</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>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <!-- com.ilppa.cocktail.Application -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.ilppa.cocktail.Application</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

내가 mvn clean을 실행하면 .jar이 생성되지만 java -jar target / test-1.0.0-BUILD-SNAPSHOT.jar을 실행할 때 생성됩니다.

오류가 있습니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
    at com.acme.test.Application.main(Application.java:12)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 1 more

나는 이해하지 못한다. 나는 일식에 오류가 없다. 나는 .jar가 maven depences에 있다고 생각한다.

해결법

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

    1.항아리에는 실행 중에 봄 부팅과 같은 종속성이 없습니다. 이 질문에 설명 된대로 모든 종속성을 가진 통합 병을 만들 수 있습니다.

    항아리에는 실행 중에 봄 부팅과 같은 종속성이 없습니다. 이 질문에 설명 된대로 모든 종속성을 가진 통합 병을 만들 수 있습니다.

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

    2.당신이 봄 부팅 공간에 머물고 싶다면 단지 용기 포장을 병에 넣으십시오.

    당신이 봄 부팅 공간에 머물고 싶다면 단지 용기 포장을 병에 넣으십시오.

    <packaging>jar</packaging>
    

    pom.xml 파일에 properties를 빌드하려면 spring-boot-maven-plugin을 추가하십시오.

    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
      </plugins>
    </build>
    

    간단한 mvn 패키지 명령은 완전한 실행 가능한 jar 파일을 생성합니다.

    자세한 내용은 아주 좋은 봄 참조 문서를 참조하십시오. 봄 참고서

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

    3.Mine은 손상된 Maven 저장소 때문에 발생했습니다.

    Mine은 손상된 Maven 저장소 때문에 발생했습니다.

    C : \ Users \ \. m2 \ repository 아래의 모든 항목을 삭제했습니다.

    그런 다음 이클립스 메이븐 업데이트를 수행하고 처음으로 작동했습니다.

    그래서 그것은 단순히 spring-boot.jar가 손상된 것입니다.

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

    4.여기 패키지는 jar 유형이므로 Manifest.mf에 종속성을 추가하기 위해 manifest 플러그인을 사용해야합니다.

    여기 패키지는 jar 유형이므로 Manifest.mf에 종속성을 추가하기 위해 manifest 플러그인을 사용해야합니다.

    여기서 문제는 maven이 pom 파일의 종속성을 찾아서 소스 코드를 컴파일하고 출력 항아리를 만들 수 있다는 것입니다. 그러나 jar를 실행할 때 manifest.mf 파일에는 종속성에 대한 세부 정보가 포함되어 있지 않습니다. 따라서이 오류가 발생했습니다. 이것은 클래스 경로 오류의 경우입니다.

    여기에서 어떻게 할 수 있는지 자세히 알 수 있습니다.

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

    5.Maven 캐시를 지우고 다시 실행하십시오.

    Maven 캐시를 지우고 다시 실행하십시오.

    mvn dependency:purge-local-repository
    
  6. ==============================

    6.또 다른 옵션은 Apache Maven Shade Plugin을 사용하는 것입니다 : 이 플러그인은 의존성을 포함하여 uber-jar에 이슈를 패키징하고 의존성의 일부를 쉐이딩 (이름 바꾸기)하는 기능을 제공합니다.

    또 다른 옵션은 Apache Maven Shade Plugin을 사용하는 것입니다 : 이 플러그인은 의존성을 포함하여 uber-jar에 이슈를 패키징하고 의존성의 일부를 쉐이딩 (이름 바꾸기)하는 기능을 제공합니다.

    이것을 플러그인 플러그인 섹션에 추가하십시오.

    <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
    </plugin>
    
  7. ==============================

    7.위의 질문에 대한 대답은 위의 어느 것도 아닙니다. 새 STS를 다운로드하면 OLD Spring Boot 상위 버전을 지원하지 않습니다. 부모 버전을 최신으로 업데이트하면 STS가 함께 제공됩니다.

    위의 질문에 대한 대답은 위의 어느 것도 아닙니다. 새 STS를 다운로드하면 OLD Spring Boot 상위 버전을 지원하지 않습니다. 부모 버전을 최신으로 업데이트하면 STS가 함께 제공됩니다.

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    

    최신 버전을 구하는 데 문제가 있다면, 그냥 새로운 Spring Starter Project를 만드십시오. 파일 -> 새로 만들기 -> 스프링 시작 프로젝트로 이동하고 최신 부모 버전을 얻을 수있는 데모 프로젝트를 만들고, 모든 것이 작동하도록 버전을 변경하십시오. STS를 변경할 때마다이 작업을 수행합니다. 나를 위해 일하는이 빠른 수정입니다. 누구나 공유 할 수있는 다른 아이디어가 있습니다.

  8. ==============================

    8.나는 똑같은 문제가 있었고 위에 제시된 대부분의 해결책을 시도했지만 아무도 나를 위해 일하지 않았다. 결국, 나는 전체 com.springframework (maven) 저장소 (단순히 .m2 / org / springworkframework 디렉토리 삭제)를 다시 작성합니다.

    나는 똑같은 문제가 있었고 위에 제시된 대부분의 해결책을 시도했지만 아무도 나를 위해 일하지 않았다. 결국, 나는 전체 com.springframework (maven) 저장소 (단순히 .m2 / org / springworkframework 디렉토리 삭제)를 다시 작성합니다.

    그것은 나를 위해 일했습니다.

  9. from https://stackoverflow.com/questions/20740703/java-lang-classnotfoundexception-org-springframework-boot-springapplication-mav by cc-by-sa and MIT license