스프링 서버를 개발하면서 팀원이 개발한 엔티티들이 들어있는 데이터베이스 모듈을 사용해야 될 케이스가 있었는데, 해당 모듈을 사용하려 했을 때 다음과 같은 에러가 발생했다
Ensure that your compiler is configured to use the '-parameters' flag.
해당 에러가 무엇이고 어떤 방식으로 해결할 수 있는지에 대해서 간단하게 메모하려고 한다.
Java 8부터 도입된 -parameters 플래그는 메서드와 생성자의 매개변수 이름을 컴파일된 .class 파일에 저장할 수 있게 해줍니다. 이 플래그를 사용하지 않으면, 리플렉션을 통해 얻은 매개변수 이름이 arg0, arg1 등의 기본 이름으로 나타나게 됩니다. 특히 Spring Boot와 같은 프레임워크에서 이 기능이 필요합니다. 예를 들어, 매개변수 이름이 코드에서 중요한 역할을 할 때, 이 플래그가 설정되지 않으면 예외가 발생할 수 있습니다.
-parameters 플래그를 사용하도록 Gradle을 설정하려면, build.gradle 파일에서 JavaCompile 작업에 대해 컴파일러 인수를 추가해야 합니다. 아래와 같이 설정할 수 있습니다:
tasks.withType(JavaCompile) {
options.compilerArgs.add("-parameters")
}
컴파일 속도를 높이기 위해서 gradle 대신 인텔리제이로 컴파일 및 테스트코드를 실행하고 있었는데, 인텔리제이로 실행을 할 경우 이와 같은 에러가 발생할 수 있다고 한다
위 사진과 같이 settings에서 gradle을 입력 한후 "Build and run using"을 intelij가 아닌 gradle로 설정해준다.