Spring Boot应用程序无法在intellij idea中启动显示异常

问题描述 投票:0回答:2

我正在尝试在 Intellij Idea 中运行应用程序,但出现此错误....

org.springframework.beans.factory.BeanCreationException:错误 创建名称为“globalExceptionHandler”的 bean:查找方法 解析失败;嵌套异常是 java.lang.IllegalStateException:无法自省类 来自 ClassLoader 的 [com.app.exception_handler.GlobalExceptionHandler] [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@2ad58620] 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.defineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:289) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.defineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1284) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1201) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) 〜[spring-beans-5.3.9.jar:5.3.9] 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) 〜[spring-context-5.3.9.jar:5.3.9] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) 〜[spring-context-5.3.9.jar:5.3.9] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) 〜[spring-boot-2.5.4.jar:2.5.4] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) 〜[spring-boot-2.5.4.jar:2.5.4] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:338) 〜[spring-boot-2.5.4.jar:2.5.4] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) 〜[spring-boot-2.5.4.jar:2.5.4] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) 〜[spring-boot-2.5.4.jar:2.5.4] 在 com.app.MmsApplication.main(MmsApplication.java:13) ~[classes/:na] 位于 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[娜:娜]在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[娜:娜]在 java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] 在 org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) 〜[spring-boot-devtools-2.5.4.jar:2.5.4]

以下是全局异常处理类

package com.app.exception_handler;

import java.time.LocalDateTime;

import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

import com.app.custom_exceptions.UserHandlingException;
import com.app.dto.ErrorResponse;

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler{
    
    @ExceptionHandler(RuntimeException.class)
    public ResponseEntity<?> handleRuntimeException(RuntimeException e) {
        System.out.println("in handle run time exc " + e);
        ErrorResponse resp = new ErrorResponse(e.getMessage(), LocalDateTime.now());
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resp);
    }
    
    @ExceptionHandler(EmptyResultDataAccessException.class)
    public ResponseEntity<?> handleEmptyDataExcetpion(EmptyResultDataAccessException e) {
        System.out.println("in handle  exc " + e);
        ErrorResponse resp = new ErrorResponse(e.getMessage(), LocalDateTime.now());
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(resp);
    }

    @ExceptionHandler(UserHandlingException.class)
    public ResponseEntity<?> handleUserHandlingException(UserHandlingException e) {
        System.out.println("in handle user exc " + e);
        ErrorResponse resp = new ErrorResponse(e.getMessage(), LocalDateTime.now());
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(resp);
    }
    
    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
            HttpHeaders headers, HttpStatus status, WebRequest request) {
        System.out.println("in handle invalid meth args ");
        StringBuilder sb = new StringBuilder("Validation Errors : ");
        ex.getBindingResult().getFieldErrors().forEach(e -> sb.append(e.getDefaultMessage()+" "));
        return ResponseEntity.status(HttpStatus.BAD_REQUEST)
                .body(new ErrorResponse(sb.toString(), LocalDateTime.now()));
    }
    


}
java spring maven intellij-idea
2个回答
0
投票

我已经测试了这个代码片段 - 应用程序启动得很好。

IllegalStateException
表示在非法或不适当的时间调用了方法。换句话说,Java 环境或 Java 应用程序未处于适合请求操作的状态。


0
投票

也许当你导入xxx.class时检查你的GlobalExceptionHandler类。在你的子模块项目中找不到东西

© www.soinside.com 2019 - 2024. All rights reserved.