[ClassPath] gradle, maven 없이 JDBC Driver를 등록하는 과정에서
목차1. 문제 발생
2. 시도
3. 해결
4. 결론
1. 문제 발생
a. 문제 발생 경위
# 그냥 간단한 jdbc 관련 테스트 코드를 작성해보고 있던 중에 위 같은 문제가 발생했다. mysql의 jdbc driver 구현체를 직접 lib에 넣고 인텔리제이 시스템 설정에서 class path로 등록해줬었는데, 이 과정에 문제가 있었나 싶었다.b. class path 문제 없는데?
# class path 등록에 문제가 있나 싶어 확인해 봤는데 이것도 정상이였다. 그럼 뭐가 문제지 .. 고민에 빠졌다.
2. 시도
a. 버전 문제 검토
# mysql의 현재 최신 release 버전인 Connector/J 8.3 버전을 사용하고 있었는데, 내 mysql 버전과 호환 문제가 있나 싶어 확인해보니 MYSQL 5.7 이상부터 지원을 한다는 내용을 확인했다. 하지만 내 mysql은 8.0.17 버전이어서 사실 호환문제는 아님을 확인했다.b. 에라 모르겠다 gradle 쓰자
# 일단 감이 안잡혀서 gradle로 `mysql-connector/J`를 받아봤는데 잘 적용이 되는게 아닌가 .. 도대체 뭐가 문젠지 또 고민에 빠졌다.c. gradle과 직접 적용시의 의존 환경 비교
# 그래서 '일단 되는 놈과 안되는 놈을 비교해보자!'라는 생각으로 둘을 비교해봤는데, 사실 sources 관련 내용이 classPath에 등록된 거 말고는 별 차이가 없었다. 그리고 sources 자체도 사실 디버깅 용도로 활용되는 것이어서 크게 다를게 없었다. 문제는 점점 미궁으로 빠지기 시작했다.
3. 해결
a. 문제 발견
# classPath 등록할 때 저렇게 적용 모듈 경로를 지정할 수 있는데 나는 최상위 경로를 지정하면 알아서 하위 경로를 찾아줄 줄 알았다. 근데 이게 왠 걸 막상 최상위 경로 지정후에 Dependencies에 들어가서 확인해보면 main에선 확인할 수 없음을 확인했다.b. module 설정을 내가 현재 사용하고 있는 main으로
# 위 처럼 main에 적용토록 세팅해주면 된다. gradle 세팅 시에도 위 처럼 정의된다.
4. 결론
# 직접 의존성을 등록하기 위해 인텔리제이 설정이나 모듈 개념을 잘 이해해야 할 것 같다.
오늘 하루도 공부할 수 있어 크게 감사합니다
2024-02-11 개발자 최찬혁