java .lang.NoClassDefFoundError: орг / springframework / веб / Util / UriTemplateHandler - PullRequest
0 голосов
/ 27 января 2020

У меня есть базовое c приложение SpringBoot, которое я создал с помощью Spring Initializer. Когда я пытаюсь запустить сервер SpringBoot (используя плагин maven (spring-boot: start), он выдает следующую ошибку.

java .lang.NoClassDefFoundError: org / springframework / web / util / UriTemplateHandler в java .lang.Class.getDeclaredConstructors0 (собственный метод) ~ [na: 1.8.0_60] в java .lang.Class.privateGetDeclaredConstructors (Класс. java: 2671) ~ [na: 1.8.0_60 ] at java .lang.Class.getDeclaredConstructors (Class. java: 2020) ~ [na: 1.8.0_60] at org.springframework.boot.context.properties.ConfigurationPropertiesBindConstructorProvider.findConstructorBindingAnnotatedConstructor: 101Properties (101Properties) ) ~ [spring-boot-2.2.4.RELEASE.jar: 2.2.4.RELEASE] в org.springframework.boot.context.properties.ConfigurationPropertiesBindConstructorProvider.getBindConstructor (ConfigurationPropertiesBindConstructorProvider. java: 48) ~ [spring-boot- 2.2.4.RELEASE.jar: 2.2.4.RELEASE] at org.springframework.boot.context.properties.ConfigurationPropertiesBean $ BindMethod. forType (ConfigurationPropertiesBean. java: 311) ~ [spring-boot-2.2.4.RELEASE.jar: 2.2.4.RELEASE] по адресу org.springframework.boot.context.properties.ConfigurationPropertiesBeanDefinitionValidator.validate (ConfigurationPropertiesBeanBean) : 63) ~ [spring-boot-2.2.4.RELEASE.jar: 2.2.4.RELEASE] в org.springframework.boot.context.properties.ConfigurationPropertiesBeanDefinitionValidator.postProcessBeanFactory (ConfigurationPropertiesBeanDefinitionValidator: 45]: 10. * 10:. boot-2.2.4.RELEASE.jar: 2.2.4.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (PostProcessorRegistrationDelegate. java: 286) ~ [spring-context -ERE-5.2.3.jpg : 5.2.3.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (PostProcessorRegistrationDelegate. java: 174) ~ [spring-context-5.2.3.RELEASE.jar: 5.2.3.R4: 5.2.3. *

Вот мой файл pom.

    <?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 https://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.2.4.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.cgtm</groupId>
    <artifactId>validator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>validator</name>
    <description>Validator</description>

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

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

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

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

</project>

Приложение . java file

 package com.cgtm.validator;

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

@SpringBootApplication
public class ValidatorApplication {

    public static void main(String[] args) {
        SpringApplication.run(ValidatorApplication.class, args);
    }

}

1 Ответ

1 голос
/ 27 января 2020

Spring boot версии 2.2.4, для него требуется Spring 5 (в основном он поставляется с предопределенной версией spring

С другой стороны, вы используете «жестко закодированный» spring web 4.1.4, что неправильно :

 <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.6.RELEASE</version>
 </dependency>

Вы должны использовать вместо этого:

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

Убедитесь, что у вас нет каких-либо зависимостей Spring 4.x на вашем пути (запустив mvn dependency:tree )

Кроме того, вам не нужно размещать:

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

И, наконец, вы используете ломбок, что, конечно, хорошо (я имею в виду, что весна может хорошо играть с lombok), но подключаемый модуль весенней загрузки по-прежнему будет упаковывать его в артефакт, несмотря на область действия * 1015. * Если вы хотите sh исключить его из конечного артефакта, вам придется настроить сам подключаемый модуль весенней загрузки, чтобы сделать итак.

Прочтите этот поток SO для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...