728x90
반응형
자바 스프링 오류 해결
오류 로그
java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.
오류 내용
스프링이 매개변수 이름을 알 수 없어서 발생하고, 대부분 컴파일러가 메서드의 매개변수 이름을 기본적으로 포함하지 않을 때 발생한다.
해결방법
1. gradle 스크립트에 컴파일 시에 '-parameters' 플래그를 추가하여 매개변수 이름을 포함하도록 설정
build.gradle
tasks.withType(JavaCompile) {
options.compilerArgs << "-parameters"
}
2. @PathVarible 확인
오류 코드
@GetMapping("/member/{id}")
public String findById(@PathVariable Long id, Model model){
MemberDTO memberDTO = memberService.findById(id);
model.addAttribute("member", memberDTO);
return "detail";
}
해결 코드
@GetMapping("/member/{id}")
public String findById(@PathVariable("id") Long id, Model model){
MemberDTO memberDTO = memberService.findById(id);
model.addAttribute("member", memberDTO);
return "detail";
}
이름을 직접 지정하여 사용 : @PathVariable("id")와 같이 이름을 명시하여 매개변수 이름을 스프링이 올바르게 인식
@PathVariable ----> @PathVariable("id")와 같이 바꿔주면 됨
728x90
반응형