Spring boot java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver报错

Ontem encontrei um erro muito estranho. Quando usei o Spring Boot para criar um novo projeto, continuei recebendo erros, mostrando "java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver". Felizmente, encontrei uma solução e irei compartilhá-la com você agora.

1. Descrição do problema

Ao usar o Spring Boot para criar um projeto, encontrei a seguinte mensagem de erro quando o programa foi iniciado:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-09-09 17:28:57.357 ERROR 8026 --- [           main] o.s.boot.SpringApplication               : Application run failed
java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver
	at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration$$EnhancerBySpringCGLIB$$9b8765b6.<init>(<generated>)
	at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration$$FastClassBySpringCGLIB$$7d5fb908.newInstance(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
......

2. Processo de análise

Esta mensagem de erro é muito estranha, porque na verdade aparece durante a fase de inicialização. Tentei vários métodos, como adicionar dependências no arquivo pom.xml, mas nenhum deles funcionou. Vou compartilhar minha solução com você aqui.

Primeiro determinei a mensagem de erro: java.lang.NoClassDefFoundError, o que significa que há um problema com meu caminho de classe.

Então verifiquei o conteúdo no meio das informações de exceção: "org/springframework/boot/bind/RelaxedPropertyResolver" e descobri que esse problema está relacionado ao arquivo de configuração do framework Spring. Considerando o princípio da configuração automática do Spring Boot, existe um possibilidade de que seja durante o processo de configuração automática. A versão de um determinado pacote jar é incompatível. Supondo que não haja problemas em outros ambientes do projeto, acho que a versão do Spring Boot pode ser muito nova ou as versões de outros pacotes jar não são compatíveis com o Spring Boot.

3. Solução

A solução para este problema é relativamente simples. Você só precisa diminuir um pouco o número da versão do Spring Boot. Você também pode excluir os números da versão do Spring Boot e outros pacotes jar no arquivo pom.xml (ignore a versão).

O arquivo pom.xml modificado é o seguinte:

<dependencies>
    <!-- Spring Boot starters -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Data MongoDB -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

    <!-- Spring Boot Actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- MongoDb Driver -->
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.6.0</version>
    </dependency>
</dependencies>

Mudei a versão do Spring Boot para esta 2.1.3.RELEASEe o efeito foi bom, e o programa não relatou mais erros durante a execução.

No Gradle, a solução é a seguinte:

configurations.all {
    resolutionStrategy {
        force 'commons-io:commons-io:2.0.1'
    }
}

4. Resumo

Após a análise e soluções acima, podemos resumir algumas soluções:

  1. Confirme a mensagem de erro. Pode haver um problema com o caminho da classe;
  2. Verifique o conteúdo das informações de exceção para determinar se há um problema com o arquivo de configuração da estrutura Spring;
  3. Reduza o número da versão do Spring Boot ou deixe o Gradle forçar a seleção da versão de alguns pacotes jar;
  4. Aprenda e use continuamente novas técnicas para evitar cometer erros.

Em pouco tempo não consigo pensar em mais nada a acrescentar, pois já elaborei a causa do problema, a solução e as etapas de implementação. Espero que este compartilhamento técnico seja útil para os programadores em seu trabalho real.

Não importa onde encontremos problemas, não devemos desistir e analisar os problemas um por um, encontrar formas de resolvê-los, explorar activamente as causas e investir em soluções.

Espero que este artigo possa fornecer orientação e ajuda aos leitores que estão enfrentando esse problema. Se o artigo conseguir o reconhecimento e o apoio de todos, você pode compartilhá-lo com mais pessoas. obrigado a todos!

おすすめ

転載: blog.csdn.net/javamendou/article/details/131372327