@PathVariable name 생략시 에러?!

박민주·2024년 1월 3일
0

java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either.

spring 3.2.1 버전으로 실습을 진행하던 중 위와 같은 에러를 발견하였다.

주로 @RequestParam, @PathVariable 두 가지 애노테이션에서 발생한다고 한다.

// 이 경우 작동함
public String pathVariable(@PathVariable("name") String name) {

    ...
    
}

// 작동안함...
public String pathVariable(@PathVariable String name) {

    ...
    
}

해결방안

1. 애노테이션에서 이름 생략하지않기(권장)

@RequestParam("username") String username
@PathVariable("userId") String userId

이와 같이 이름을 생략하지 않고 붙여주는 것.

2. 컴파일 시점 -parameters 옵션 적용


1. IntelliJ IDEA에서 File -> Settings를 연다. (Mac은 IntelliJ IDEA -> Settings)
2. Build, Execution, Deployment → Compiler → Java Compiler로 이동한다.
3. Additional command line parameters라는 항목에 다음을 추가한다.

-parameters
  1. out 폴더를 삭제하고 다시 실행한다. 꼭 out 폴더를 삭제해야 다시 컴파일이 일어난다.

3. 빌드툴 Gradle 사용하기


1. IntelliJ IDEA에서 File -> Settings를 연다. (Mac은 IntelliJ IDEA -> Settings)
2. Build, Execution, Deployment → Build Tools → Gradle 로 이동한다.
3. run using에서 Gradle로 바꿀것

출처
https://www.inflearn.com/questions/1087879/pathvariable-name-%EC%83%9D%EB%9E%B5-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4

profile
개발자 되고싶다..

0개의 댓글