ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 SQL 설정 중 발생한 com.mysql.cj.jdbc.Driver 에러
    오늘/Error 2023. 11. 7. 21:10

     

    강의에서 스프링 기본 설정 코드를 복붙하던 중 이러한 에러가 떴다.

    패키지를 읽을 수 없다고 하는데  

    그러면 의존성에서 이전 프로젝트의 설정을 가져오기로 했다.

     

     

     

    그런데 현재 build.gradle에서 sql 관련 의존성은 runtimeOnly로 지정되어 있었고

     

     

     

    내가 붙여넣고 싶은 코드는

     implementation 이었다.

    다른데? 나 이거 붙여넣어도 되나?  불안감이 생겼지만 일단 붙여넣고 빌드해보았다.

     

     

     

    원래는 com 이후로 다 빨간색이었다.

    이상하게도 빌드가 된 후 저 부분의 빨간색이 사라졌다.

    튜터님께 이것에 관해 질문해보았고,  implementation이 runtimeOnly를 포함하고 있어서 그런것이라고 하셨다.

     

     

     

     

    그런데 혹시하는 궁금증에

    다시

    이것을 다시 입력하고

    implementation을

    주석처리하고 빌드해보니

    에러 없이 정상적으로 동작한다.

     

    왜지?

     

     

     

    가설1.

    이전 implementation을 빌드 했을때

    의존성이 똑바로 주입되어서 스프링이 정신차렸다.

     

    가설2. 

    runtimeOnly를 처음 빌드했을때 문제가 생긴것일 뿐이다.

     

     

    고구마엔딩이지만  가설 중 뭐가 맞는지는 검증이 불가능하다.

    다시 같은 에러가 뜨지 않았기때문에.

     

    다만 Gradle이 잘못된 의존성을 캐시했거나,

    제대로 캐시하지 못해서 문제가 생겼다고 볼 수 있을 것 같다.  

     

    앞으로 해당 에러가 떴을떄 해결방식을 알았으니 다행이다. 

    라고 마무리지어야겠다.

     

     

     

     

    implementation 과 runtimeOnly에 대해 GPT에게 물어보았다.

     

     

    implementation은 프로젝트를 빌드하는 동안 컴파일에 필요한 의존성을 정의합니다.

    이것은 컴파일 시에 필요한 클래스와 메소드를 포함합니다. 

    컴파일 후 생성된 JAR 파일에도 이러한 라이브러리들이 포함됩니다.

     

     

    runtimeOnly는 런타임 시에만 필요한 의존성을 정의합니다.

    이것은 프로젝트를 실행할 때만 필요한 라이브러리들을 의미합니다. 

    런타임에만 사용되고 컴파일 후 생성된 JAR 파일에는 포함되지 않습니다.

     

     

     

    끝까지 implementation이 포함하는건지 안하는건지는 안알려준다.

     

     

Designed by Tistory.