* 모든 모듈 설정을 완벽히 했는데 안된다고 생각될 때 백업 후 최후의 방법으로 써주세요!
컴파일 오류는 안나는데 서브 모듈(혹은 공통 모듈)의 소스를 실행하는 부분에서
런타임 오류로 java.lang.noclassdeffounderror 가 발생했다.
멀티 모듈 구성 후 잘 실행되던 프로젝트 였는데 pom.xml을 수정하고 Invalidate caches를 하는 중 설정이 꼬인 듯 했다.
설정 꼬이는거 하루 이틀 아니지만 유독 안잡혀서 꼬박 3일은 고생한듯..
[체크 리스트]
* 의존성 추가 설정 확인
- 프로젝트에 새 모듈을 추가한 경우 File > Project Structure > Modules 메뉴에서 모듈이 목록에 있는지 확인. 목록에 없으면 수동으로 모듈을 추가할 수 있습니다.
- 만약 의존성이 없거나 잘못 설정된 경우, main 모듈의 Dependencies에서 + 버튼을 눌러 sub 모듈을 추가.
-> 이미 함
* 소스 경로 확인: 패키지나 클래스 경로가 올바른가?
-> git에서 받은 플젝이기에 소스 경로 이상없음
* File > Invalidate Caches / Restart를 실행하여 캐시를 초기화한 후, Build > Rebuild Project
-> 500번은 했음!!!
아무튼 원래 알고 있던 모든 방법을 동원해도 해결되지 않아서 실행한 방법은
새 경로에 New 프로젝트 생성이다.
물론 이것도 몇십 번 반복했지만 문제는 동일했었다..
이유는 Get from version Control로 Git 에서 소스를 새로 받아와 계속 새로운 폴더에 생성해 빌드를 시도 했기 때문이다.
(Git 에 .iml 파일이 커밋 되어있는 상태여서 새로 Clone을 받아도 동일한 iml을 사용 하고 있었다. 또한 .idea 설정 파일이 로컬에 있던걸 사용했기 때문일 수 있음)
[🔍해결]
- 🔥로컬 소스 내 .iml 파일 삭제 후 프로젝트 재구성함.
- 🔥서브(공통)모듈 소스가 실제로 컴파일 되고 있는지 확인 => 컴파일 되어야 한다! 안되고 있다면 다음 Output path 확인.
- 🔥서브(공통)모듈 소스의 Compiler Output 확인 => Ctrl + Alt + Shift + S > Modules > 서브모듈 [Paths] 탭.
[🔍분석]
1. 프로젝트 마다 .iml 파일이 다르게 설정될 수 있으며, 이로 인해 모듈 간의 설정 불일치가 발생할 가능성
*.iml : Intellij IDEA Module의 약자로, IntelliJ IDEA에서 모듈별 설정을 저장하는 파일이다. 이 파일에는 모듈의 SDK, 라이브러리 경로, 디펜던시 정보 등이 포함되어 있어 git에 올리지 않는게 좋다.(팀과 공유X)
그래서 재설정 하고자 iml 삭제 후 프로젝트 모듈 종속성 및 라이브러리 설정을 다시했다.
2. 기존에 설정이 꼬여서 인지 out path에 이상한 경로가 적혀 있었다. 메인모듈의 Output Path 와 동일하게 설정.
런타임 오류가 발생할 땐 컴파일된 .class 파일이 생기는 target 폴더에 서브모듈 소스가 없었는데(즉 컴파일 대상으로 안 잡혀 있었음) 해결 후 target 경로에 sub소스가 생성된 걸 확인할 수 있었다. => 여기선 common 소스가 서브(공통)모듈 이었음.
[상세 설명]
2-1. File > Project Structure (Ctrl + Shift + Alt + S) > Project > Compiler output 경로 설정
ex) C:\gitRepo\gw\pointApp\target\classes
2-2. File > Project Structure (Ctrl + Shift + Alt + S) > Modules> Path > Compiler output 확인
ex ) 메인 모듈 설정: Use module compile output path 체크 -> Output path 입력
ex ) 서브 모듈 설정: Use module compile output path 체크 > Output path 입력 (나는 메인과 동일하게 했음)
'IDE & Tool > InteliJ' 카테고리의 다른 글
[Intelij] git으로 관리할 프로젝트가 Intelij에서 svn 으로 연결되어 있을 때 / svn 설정 해제 / git 으로 연결하기 (0) | 2025.02.19 |
---|---|
[Intelij] 사용하지 않는 Import 구문 삭제 (0) | 2024.11.07 |
[InteliJ] Eclipse project Git주소로 Import / InteliJ에서 Tomcat 서버 추가 (0) | 2023.02.10 |
[Intelij] 자주 쓰는 단축키 모음(Windows) (0) | 2023.02.03 |