java.io.FileNotFoundException: class path resource .class cannot be opened because it does not exist
라는 이슈가 발생하게 되었다.
구글 검색을 통해 많은 케이스들을 봤는데 많이 헤맸다.
당연히 쉽게도 해석이 되었던 저 문장의 핵심 구문은 .class does not exist
그러니까 클래스가 존재하지 않는다는 거다.
발생했던 시점은 내가 클래스를 삭제하고 다시 애플리케이션 실행을 진행했을 때 저 오류를 뱉었다.
인텔리제이에 캐시된게 문제가 있는가 하면서
캐시를 삭제해주고, 그리고 gradle clean
을 통해 build 파일들도 다 삭제했다가 재 빌드를 진행했다.
그래도 역시 되지 않더라... 😱
여기 부분부터 상당히 절망적 이었던것 같다.
해결한 방법은 out폴더는 gradle clean 했을 때 삭제되지 않는다.
그러니까 저 out 디렉토리에는 자꾸 클래스 파일이 남아있는데 실제 구동하는 내 프로젝트 목록에는 폴더가 없어서?
그래서 에러를 뱉은 것 같다.
그러니까 이 인텔리제이 빌드때의 컴파일에서 차이가 나니까 에러를 뱉어준 것이다.
properties, 직접 클래스에서 import했던 것들
전부 삭제해줬는데 이 에러를 뱉어서 상당히 골치아팠다.
빌드할 때 에러가 나게되면 일단 컴파일 클래스들을 저장하는 디렉토리들 부터 체크하고 의존성을 체크하는 식으로
빌드 시에 에러를 찾아야 겠다.
이거는 꽤 간단한 이슈였다.
일단 지금 현재의 내 프로젝트는
현재 이런식으로 프로필을 나누어서 사용하고 있다.
이 상태에서 prod로 운영하려고
먼저 gradle build
를 통해 빌드, 그리고 테스트가 돌아가는데 전부 에러가 발생했다.
분명 나는 application-test.yaml 을 넣어줬는데도 불구하고 에러가 나는 것이었다.
spring:
profiles:
active: test
include: dev
해결했던 방법은 /test/resources/
에도 application.yaml 파일을 생성해주고 거기에
위와 같이 프로필 활성은 test로 하는데 dev 설정을 포함해서 로딩하도록 진행했다.
그러니까 정상적으로 테스트가 수행되었다.