[ 에러 발생 상황 ]
코드에는 문제가 없는데 API호출시 에러 발생
java.lang.IllegalArgumentException:
Name for argument of type [java.lang.String] not specified,
and parameter name information not available via reflection.
Ensure that the compiler uses the '-parameters' flag.
[ Solution ]
구글링 해보면 스프링부트3.2부터 문제가 생겼고
@RequestParam @PathVariable, @Autowired, @ConfigurationProperties
를 주로 사용할때 발생된다고 한다
파라미터를 같은 매개변수명에 자동매핑 시켜주는것이 문제가 생긴거 같은데
빌드시 -parameter 옵션을 추가해주라고 한다
나의경우 STS 4.25.0.RELEASE에 gradle을 사용중이였고compileJava { options.compilerArgs << '-parameters' }
를 추가후 gradle clean build 다해봤지만 동일했다
ChatGPT에 물어보면 이클립스에서 -parameter옵션을
Additional command line parameters에 설정할수도 있다는데
내가 사용중인 STS 4.25.0.RELEASE에는 그런건 존재하지 않았고
IntelliJ에 있는 옵션인거 같다
결론은
해당 어노테이션에 파라미터명을 정확히 명시해주는것으로 해결했다// 기존에 에러가 나던 코드 public String login(@RequestParam String name) // 수정된 코드 public String login(@RequestParam("name") String name)
반응형