lala9663
Bump into
lala9663
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (1)
    • Java (39)
    • Spring (28)
    • IntelliJ (7)
    • Git,Github (2)
    • CS (22)
    • Algorithm (23)
      • Algorithm 문제 (13)
    • 공부방 (9)
    • 그 외 (27)
      • TIL (24)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Post
  • 자바 람다
  • Til
  • 스트림(Stream)
  • 자바
  • Spring
  • 웹 3.0
  • servlet
  • was
  • jsp
  • 웹서버
  • 백준
  • Java
  • Intellij
  • Get
  • 1193
  • 동적
  • thread
  • 백준 벌집
  • 정적
  • 백준 2292
  • try-catch

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
lala9663
Spring

[Spring] java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection.

Spring

[Spring] java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection.

2024. 2. 6. 20:41

jakarta.servlet.ServletException: Request processing failed: 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.

테스트 코드를 돌리고 있는데 갑자기 이런 오류가 나왔다.. 갑자기 처음 보는 오류가 나와서 당황,, 

 

해석을 해보니 파라미터를 못찾는 문제 같은데 왜 갑자기 이런 오류가 나왔는지 궁금하다. 

김영한 님께서 이와 유사한 질문에 대한 글에 답을 이미 해 주신 상태였다. 역시 갓

 

해결방법이 총 3가지가 있다고 한다.

 

1. 애노테이션 생략 X

 

스프링 부트 3.2부터 자바 컴파일러에 -parameters 옵션을 넣어주어야 애노테이션의 이름을 생략할 수 있다고 한다.

@RequestMapping("/request")
public String request(@RequestParam("username") String username) {
   ...
}

 

이런 식으로 

 

원래 요청 파라미터의 이름과 메서드의 매개변수 이름이 일치하지 않을 때 명시적으로 파라미터의 이름을 지정해줘야 하고 매개변수 이름과 요청 파라미터의 이름이 동일하면 생략할 수 있는데  어찌 된 거지,,,

 

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

 

  1. IntelliJ IDEA에서 File -> Settings를 연다. (Mac은 IntelliJ IDEA -> Settings)
  2. Build, Execution, Deployment → Compiler → Java Compiler로 이동한다.
  3. Additional command line parameters라는 항목에 다음을 추가한다.
    -parameters
  4. out 폴더를 삭제하고 다시 실행한다. 꼭 out 폴더를 삭제해야 다시 컴파일이 일어난다.

근데 나는 Java Compiler에  Additional command line parameters 이 항목이 보이지 않아서 이 방법은 패스,,

 

3. 빌드를 Grdle 방식으로

 

빌드를 할 때 gradle방식과 IntelliJ IDEA 방식이 있는데 나는 Intelli IDEA 방식을 사용하고 있다. 

Gradle로 선택하면 컴파일 시점에서 해당 옵션을 자동으로 적용해 준다.

 

변경하는 방법은 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

 

나는

코드의 변경을 굳이 하고 싶지 않아서 3번 방식으로 문제를 해결

 

 

 

 

참고자료: 인프런 질문

'Spring' 카테고리의 다른 글

[Spring] JUnit을 이용한 단위 테스트, 통합 테스트  (0) 2023.09.20
단위 테스트, 통합 테스트  (0) 2023.09.14
DDD(Domain Driven Desgin)  (0) 2023.07.25
프로젝트 패키지 구조는 어떻게 나누는게 좋을까  (0) 2023.07.14
[Spring] 왜 Service 와 ServiceImpl로 나누는걸까  (0) 2023.06.28
    'Spring' 카테고리의 다른 글
    • [Spring] JUnit을 이용한 단위 테스트, 통합 테스트
    • 단위 테스트, 통합 테스트
    • DDD(Domain Driven Desgin)
    • 프로젝트 패키지 구조는 어떻게 나누는게 좋을까
    lala9663
    lala9663
    초보의 험난한 공부

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.