에러 8

스프링 - url 요청시 이전 url 에서 Error during execution of processor 'org.thymeleaf.spring6.processor.SpringInputGeneralFieldTagProcessor' (template: "layout-main/layout" - line 135, col 19) 가 발생하는 오류

이 url 에서 이 url 로 이동하니 이처럼 해당 html 을 열수 없다고 나온다. 간단한 템플릿 오류로 타임리프 문법 실수를 생각했는데, 그 아래의 에러 내용을 더 보다보니 이해할수 없는 내용이 나왔다. layout-main/layout 파일에서 오류가 발생했다는 말이다. 그리고 layout-main/layout 는 이전 화면, localhost:8080 의 화면이다. 다시 정리하면, 이전 화면에서 오류가 나서 다음 화면으로 못넘어간다는 말이 되는데, 문제는 정작 "/" 로 요청을 날릴때는 어떤 오류도 발생하지 않는다는 것이다. 그렇다고 "/club?clubNo=1" 의 url 이 "/" 으로 가거나, "layout-main/layout" html 파일에 접근하지도 않는다. 더 내려보면 "layout..

카테고리 없음 2024.03.02

Spring validation 과정 중, properties에서 지정한 message 가 출력되지 않음. - 타임리프, 스프링 오류

문제 상황. 오류 메시지를 properties 파일을 이용해 직접 작성하려고 한다. 그러나 옳바르게 문구가 나오지 않고 기본 오류 문구만 출력된다. test 환경에서 MessageSource 를 주입받아 확인해보면 errors.properties 파일 내부의 문구가 옳바르게 MessageSource 빈에 등록된건 확인이 가능하다. DTO @Data @AllArgsConstructor public class MemberJoinForm { @NotBlank private String id; @NotBlank private String pw; @NotBlank @Size(min = 2, max = 5) private String name; @Size(min = 4, max = 15) private String..

에러 기록 2024.02.19

java.lang.IllegalArgumentException: Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection - 스프링. 파라미터 어노테이션에 자동 이름 부여가 안되는 오류

오류 상황 @GetMapping("/test") public String test(@RequestParam Integer data){ return "ok"; } 이 컨트롤러에 http://localhost:8080/test?data=10 요청시 java.lang.IllegalArgumentException: Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 오류가 터지며 응답이 안된다. 원인 원래는 자동으로 변수 이름이 @RequestParam..

에러 기록 2024.01.31

Parameter 0 of constructor in 컨트롤러 클래스 required a bean of type '클래스 이름' that could not be found. 스프링 에러

빈이 정상적으로 등록되지 않았을때 발생하는 문제다. 문제 원인은 대부분 다음과 같다. 1. @Service, @Repository 같은 어노테이션을 안붙임. 2. @Component 을 붙여주거나 직접 @Configruation 클래스에서 @Bean 어노테이션을 이용해 빈으로 등록 3. Application 실행 클래스 하위 패키지에 빈 클래스를 생성 -> 내 케이스 나는 3번의 케이스, 즉, @ComponentScan 대상이 아닌 패키지에 클래스를 생성한 것이 문제였다.

에러 기록 2024.01.27

org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException: HV000232: No JSR 223 script engine found for language "javascript". 에러 - 스프링

@ScriptAssert 를 사용할시 다음과 같은 오류가 발생한다. 원인: JDK8 ~ 14까지는 Javascript를 지원하는 Nashorn 엔진을 쓰지만, JDK14 이후부터는 Javascript가 지원되지 않는 GraalVM을 사용하기 때문이라고 한다. 뭔 소리인지 정확히 모르겠지만 JVM 버전이 높아서 터진 문제다. 해결: JVM을 낮추는 것은 간단하지만 위험한 해결법이고, 스프링 부트 3.x 버전 이상부터는 무조건 jvm 17이상을 사용해야 하기에 낮출수도 없다. dependencies { implementation 'org.openjdk.nashorn:nashorn-core:15.3' } 이런 식으로 디펜던시를 추가하면 해결된다.

에러 기록 2024.01.12

General error during semantic analysis: Unsupported class file major version 61 에러

외부에서는 잘 실행되던 스프링 프로젝트가 집에서 실행하니 이런 오류가 발생했다. 원인: 이 에러는 gradle과 jdk의 버전이 맞지 않아서 생기는 에러라고 한다. 자세한 사항은 공식 문서를 참조하자. 강의를 들으면서 제공한 프로젝트를 그대로 가져왔는데, 그로 인한 환경설정 차이가 일어난 것이다. 해결법: jdk 15 버전을 다운받아 적용시켜 해결했다. intellij 에서 자동으로 다운되는 azul - 15 버전을 이용했다.

에러 기록 2024.01.10

java.lang.NoClassDefFoundError: 외부 라이브러리

리눅스 배포시 java.lang.NoClassDefFoundError: 외부 라이브러리 에러가 발생한다. 몇시간째 구글링한 결과 크게 2가지로 나뉘는 것을 알았다. 1. 버전이 맞지 않은 경우. 나같은 경우는 gradle을 통해 외부 라이브러리를 추가했다. 만약 서로 의존하는 라이브러리간 버전이 맞지 않으면 참조할수 없어 오류가 발생할수 있다. 따라서 버전을 맞춰주면 해결됨 2. classpath 가 옳게 설정되지 않은 경우. gradle 을 통해 불러온 라이브러리는 /Users/${USERNAME}/.gradle/caches/modules-2/files-2.1/${packageName}/${libname} 에 저장된다. 따라서 소스 코드 내부에서 외부 라이브러리를 임포트해서 사용할때, 라이브러리가 직접..