해결된 질문
작성
·
671
답변 1
1
안녕하세요. 로코님
gradle을 통해서 실행하면 gradle을 통해서 빌드하고 실행하는 추가 과정이 들어가기 때문에 그렇습니다.
추가로 IntelliJ로 직접 실행하고 싶으면 다음 코드를 주석처리를 해주거나 삭제해주시면 됩니다.
//`providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'`
그리고 이 부분이 providedRuntime이라는 부분인데, 이 부분이 설정되어 있으면 gradle 빌드에서는 기본적으로 이 라이브러리를 빌드에 포함하지 않게 됩니다.
(빌드에 포함하지 않고 향후 빌드된 결과에 해당 라이브러리가 포함되어서 실행되는 방식입니다. 일반적으로 웹 서버를 별도로 설치하는 경우에 해당합니다.)
IDE에서 발생하는 문제는 정확한 파악이 어려운데, 제 생각에는 인텔리J가 이 부분을 보고 단순히 라이브러리를 빼버려서 그런 것 같아요.
조금 뒤에 JAR로 프로젝트를 빌드할 때는 이런 문제가 발생하지 않고, 최근에는 대부분 Jar 방식을 사용하기 때문에 이 부분은 크게 고민하지 않으셔도 됩니다.
감사합니다.
자세한 답변 감사합니다!
답변주신대로 다시 실행환경을 IntelliJ로 설정하고, build.gradle 라인 한 줄을 없앤 뒤 refresh하고 main을 실행하니 정상 작동하는 것을 확인했습니다.
에러 발생 원인에 대해서도 어느 정도 이해가 되었습니다. 정말 감사합니다.
사실, 에러를 해결하기 전에는 제가 국비지원 학원에서 서블릿과 JSP, 그리고 순수 jdbc 방식으로 myBatis 등을 활용하는 방식만 주구장창 써왔던 지라 스프링 이전의 MVC가 익숙해서 이 부분은 그냥 코드만 복붙해놓고 이해만 하면서 넘어갈까... 싶은 유혹이 생겼지만
이 뭔가 찝찝함을 참을 수가 없어서 선생님을 귀찮게 만들었던 것 같습니다...
좋은 답변 감사드리며, 앞으로도 열심히 수강하도록 하겠습니다!
링크를 확인해보았습니다만,
implementation 'org.springframework.boot:spring-boot-starter-web'
라인이 build.gradle에서 빠져 있을 수도 있다고 하셨는데
해당 라인은 start.spring.io에서 build.gradle를 자동입력해줄 때부터 추가가 되어있었습니다.
그런데, 이것저것 시도해보다가 '메인이 실행이 안된다는 건 실행 환경에 뭔가 문제가 있는건가?' 하는 생각에 강의 초반부, gradle 실행환경을 IntelliJ로 설정했던 것을 다시 Gradle로 바꾼 다음 실행하니 에러가 안나고 잘 실행이 되었습니다.
뭔가 문제는 풀렸지만 의혹은 더 가중된 느낌입니다...
일단 gradle 설정을 IntelliJ로 바꾸라고 하셨을 때의 설명처럼, Gradle로 다시 바꾸니 실행 속도 저하가 확실히 느껴졌구요.
그렇다면 도대체 IntelliJ와 Gradle의 실행방식에 어떤 차이가 있길래 이런 속도 차이가 발생하는 것이며,
무엇보다도 IntelliJ 실행 환경에서는 왜 WebServlet 어노테이션을 찾지 못하는 에러가 발생했는지 너무 궁금해졌습니다.
혹시 정확히 알 수 없다면, IntelliJ 실행 환경은 어떤 특징이 있길래 gradle을 빨리 실행할 수 있는지라도 알고 싶습니다...