programing

자바 langClassNotFoundException: org.springframework.boot.스프링 어플리케이션 메이븐

closeapi 2023. 9. 28. 08:23
반응형

자바 langClassNotFoundException: org.springframework.boot.스프링 어플리케이션 메이븐

스프링 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 install하면 .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가 depositions인 것 같아요.

봄 부츠 공간에 머무르려면 pom 포장을 항아리로 설정하십시오.

<packaging>jar</packaging>

pom.xml 파일에 속성을 만들 때 spring-boot-maven-plugin를 추가합니다.

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

그러면 단순한 mvn package 명령으로 완전한 실행 가능한 jar 파일이 생성됩니다.

자세한 내용은 매우 좋은 스프링 참조 문서 참조 (Doing it gradle style 또한) 스프링 참조 문서

실행 중에 찾는 스프링 부트와 같은 종속성이 병에 들어 있지 않습니다.질문에 요약되어 있는 모든 종속성을 사용하여 통합 항아리를 만들 수 있습니다.

스프링 클라우드 애플리케이션을 실행하는 경우 부팅 버전이 클라우드 버전과 일치하는지 확인합니다.버전 호환성 매트릭스는 이 페이지 하단인 https://spring.io/projects/spring-cloud 에서 확인할 수 있습니다.

내 것은 부패한 메이븐 저장소 때문입니다.

는 로 했습니다.C:\Users\<me>\.m2\repository.

그 후 이클립스 메이븐 업데이트를 했고, 처음으로 작동했습니다.

은 단순히 이었습니다.spring-boot.jar타락했습니다.

위의 질문에 대한 답은 "위의 질문들 중 어느 것도"입니다.새 STS를 다운로드하면 이전 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>

최신 버전을 사용하는 데 문제가 있는 경우 새 스프링 스타터 프로젝트를 생성하면 됩니다.파일->새로->봄 시작 프로젝트로 이동하여 데모 프로젝트를 생성하면 최신 상위 버전을 얻을 수 있으며 버전을 변경하면 모두 작동합니다.STS를 변경할 때마다 이 작업을 수행합니다.

작성한 캐시를 정리하고 다시 실행:

mvn dependency:purge-local-repository

여기서 패키징은 jar type이므로 Manifest.mf에 종속성을 추가하려면 Manifest 플러그인을 사용해야 합니다.

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

자세한 방법은 여기에서 확인하실 수 있습니다.

다른 옵션은 Apache Maven Shade 플러그인을 사용하는 것입니다.이 플러그인은 종속성을 포함하여 uber-jar에 아티팩트를 패키징하고 일부 종속성의 패키지를 음영 처리(즉, 이름 변경)하는 기능을 제공합니다.

빌드 플러그인 섹션에 추가

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

의존 관계가 올바르게 구축되지 않았을 수도 있습니다.프로젝트내컴플레이션이슈를확인합니다.

프로젝트를 정리하고 재구축합니다.

:mvn clean install

:gradle clean build아니면gradlew clean build

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

저도 같은 문제가 있어서 위에 제시한 대부분의 해결책을 시도해 보았지만, 저에게는 아무 것도 효과가 없었습니다.결국 전체 com.springframework(메이븐) 저장소를 재구축합니다(단순히 .m2/org/springframework 디렉토리를 삭제합니다).

그것은 나에게 효과가 있었다.

했습니다 했습니다..project프로젝트를 이클립스에서 여는 동안 파일을 생성합니다.그래서 제가 하고 싶은 일은 상황별 메뉴를 이용하여 다시 maven nature를 추가하는 것이었습니다(프로젝트 > 구성 > maven nature 추가). 후 모든잘그다 :D

메타데이터를 지우는 것이 작업 공간을 변경하거나 변경하는 데 도움이 되었습니다.

또한 결과 병 옆에 필요한 종속성을 복사하여 클래스 경로에 포함해야 합니다.다른 방법은 메이븐 쉐이드 플러그인을 사용하는 것입니다.

첫 번째 옵션에 대한 스니펫:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-dependency-plugin</artifactId>
   <version>3.3.0</version>
   <executions>
      <execution>
         <phase>initialize</phase>
         <goals>
            <goal>copy-dependencies</goal>
         </goals>
         <configuration>
            <overWriteReleases>false</overWriteReleases>
            <includeScope>runtime</includeScope>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
         </configuration>
      </execution>
   </executions>
</plugin>

....

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>3.2.2</version>
   <configuration>
      <archive>
         <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>your.class</mainClass>
         </manifest>
      </archive>
   </configuration>
</plugin>

저 같은 경우에는 이런 절차를 밟았습니다.

  1. c:/users/your-host-name/.m2 폴더를 정리합니다.

  2. 빌드를 위해 pom.xml에 이 파일이 있는지 확인합니다.

    스프링 골조 plugin 3. 부츠스프링- 부츠메이븐- 플러그인 3.0.1
  3. Maven 업데이트, IntelliJ에서 [![이미지 설명 입력]][1][1]을 클릭하면 됩니다.

  4. 마지막으로 메이븐 패키지 버튼을 사용하여 항아리를 만듭니다.

Spring boot와 함께 Docker를 사용할 때 이 오류가 발생했습니다.

해결책은 도커 파일을 편집하는 것으로 밝혀졌습니다.

도커 파일은 다음과 같습니다.
FROM openjdk:11
유지 관리자 세르게이 자브얄로프
카피/타겟/클래스//앱
WORKDIR / app
노출 3000
CMD 자바 프로젝트.어플

이렇게 바꿨습니다.
FROM openjdk:11
유지 관리자 세르게이 자브얄로프
COPYOUT/artifacts/카멜레온테스트태스크_jar/카멜레온테스트태스크.jar/app/카멜레온테스트태스크.jar
WORKDIR / app
노출 3000
엔트리 포인트 ["java", "-jar", "/app/KamelyoonTestTask.jar"]

같은 오류가 발생하여 프로젝트에 추가한 새로운 메이븐 종속성 중 하나가 범위를 제공하고 JDK나 컨테이너에서 해당 종속성의 특정 클래스를 찾을 수 없었습니다.

이것은 종속성의 범위를 제공된 컴파일 유형에서 기본 컴파일 유형으로 변경함으로써 수정되었습니다.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

로.

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

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

클래스 Not found는 클래스에 대한 종속성 트리를 입력하려고 할 때 런타임 예외이며 클래스는 해당 jar 모듈의 하위 종속성에서 찾을 수 없습니다.

언급URL : https://stackoverflow.com/questions/20740703/java-lang-classnotfoundexception-org-springframework-boot-springapplication-mav

반응형