Maven 프로젝트의 ClassNotFoundException 문제

Aug 29 2020

저는 직업 지원서의 일부로 프로젝트를 완료하도록 지정되었습니다. 회사에서 다음 요구 사항을 설치하도록 저에게 보냅니다.

  • OpenJDK 1.8
  • Maven 3.x
  • 힘내 2.x
  • MySQL 5.x.

서버 측 (Java)에서 앱을 실행하려고하는데이 예외가 발생합니다 (아마 종속성 문제이지만 찾을 수 없습니다).

2020-08-30 07 : 34 : 56.850 오류 org.springframework.boot.SpringApplication : 858-애플리케이션 실행 실패 java.lang.NoClassDefFoundError : org / springframework / boot / bind / RelaxedDataBinder at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector. org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.getExclusions (EnableAutoConfigurationImportSelector.java:172)의 getExcludeAutoConfigurationsProperty (EnableAutoConfigurationImportSelector.java:179) at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.selectImports (EnableAutoConfigurationImportSelector.java:87) at org.springframework .context.annotation.ConfigurationClassParser$DefaultDeferredImportSelectorGroup.process(ConfigurationClassParser.java:892) at org.springframework.context.annotation.ConfigurationClassParser$org.springframework.context.annotation.ConfigurationClassParser의 DeferredImportSelectorGrouping.getImports (ConfigurationClassParser.java:878)$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:804) at org.springframework.context.annotation.ConfigurationClassParser$org.springframework.context.annotation.ConfigurationClassParser.parse (ConfigurationClassParser.java:185)의 DeferredImportSelectorHandler.process (ConfigurationClassParser.java:774) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions (ConfigurationClassPostProcessor.java:315) at org .springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry (ConfigurationClassPostProcessor.java:232) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors (PostProcessorRegistrationDelegate.PostProcessorRegistrationPostProcessors (PostProcessorRegistrationDelegate.PostProcessorRegistrationDelegate.springframework. .java : 95) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors (AbstractApplicationContext.java:705) at org.springframework.context.support.AbstractApplicationContext.refresh (Abstrac tApplicationContext.java:531) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:142) at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:775) at org.springframework .boot.SpringApplication.refreshContext (SpringApplication.java:397) at org.springframework.boot.SpringApplication.run (SpringApplication.java:316) at org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) at org. springframework.boot.SpringApplication.run (SpringApplication.java:1248) at gr.publicsoft.springbootcrud.Application.main (Application.java:12) at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.base / java.lang. 또는에서 reflect.Method.invoke (Method.java:566) g.springframework.boot.devtools.restart.RestartLauncher.run (RestartLauncher.java:49) 원인 : java.lang.ClassNotFoundException : org.springframework.boot.bind.RelaxedDataBinder at java.base / jdk.internal.loader.BuiltinClassLoader .loadClass (BuiltinClassLoader.java:581) at java.base / jdk.internal.loader.ClassLoaders $ AppClassLoader.loadClass (ClassLoaders.java:178) at java.base / java.lang.ClassLoader.loadClass (ClassLoader.java:522 ) ... 26 개의 공통 프레임 생략

**Pom.xml(general in project)**
<?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/xsd/maven- 
 4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

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

<groupId>gr.publicsoft.springbootcrud</groupId>
<artifactId>spring-boot-crud</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<properties>
    <java.version>1.8</java.version>
</properties>

<modules>
    <module>springbootcrud-domain</module>
    <module>springbootcrud-service</module>
    <module>springbootcrud-webapp</module>
</modules>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

</project>

**Pom.xml(inside app folder)**
<?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/xsd/maven- 
4.0.0.xsd">
<parent>
    <artifactId>spring-boot-crud</artifactId>
    <groupId>gr.publicsoft.springbootcrud</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>springbootcrud-webapp</artifactId>



<properties>
    <java.version>1.8</java.version>
    <finalName>${project.artifactId}-${project.version}</finalName> </properties> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles> <dependencies> <dependency> <groupId>gr.publicsoft.springbootcrud</groupId> <artifactId>springbootcrud-service</artifactId> <version>${project.parent.version}</version>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
    <dependency>
        <groupId>eu.bitwalker</groupId>
        <artifactId>UserAgentUtils</artifactId>
        <version>1.21</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>
</dependencies>

<build>
    <finalName>${finalName}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

</project>

답변

1 shengyan Aug 30 2020 at 05:14

실제로 spring-boot-starter-parent포함 spring-boot-autoconfigure, 참조https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/2.3.3.RELEASE에 대한 관리 종속성 .

이 버전을 구체적으로 지정하면 (즉, 두 가지 버전이 있음) 오류가 발생할 수 있습니다.