Dev_Log

[Eclipse] 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.

LeeDaniel 2024. 11. 5. 17:48
 [ 에러 발생 상황 ] 
코드에는 문제가 없는데 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)

 

반응형