0. 배경
- Intellij에서 Maven 프로젝트를 생성한 후, Tomcat을 연동해서 웹 개발 환경 구축하기
- JDBC와 MySQL 연동한 후, 콘솔에 레코드 출력해서 잘 연동되었는지 확인하기
- Servlet 생성해서 MySQL에서 레코드 가져와서 JSON 문자열로 변환 후, 브라우저에 출력하기
이슈 1
1.1. 문제 상황
- Maven 기반으로 하는 실습
- New Project > Build System: Maven 으로 프로젝트 생성 후, 이전과 같은 방식(Empty Project로 생성)으로 Tomcat을 연동함
- 근데 Tomcat이 안돌아감 ㅠ
- 밑에 Warning의 Fix에서 artifacts를 설정하려고 했는데 추가할 수가 없었음
1.2. 해결 과정
https://nooblette.tistory.com/323
Maven과 Tomcat으로 웹 개발 환경 구축하기(+ IntelliJ)
인텔리제이 환경에서 Spring Boot를 사용하지 않고, Maven 기반의 웹 프로젝트를 Tomcat을 통해서 웹 개발환경을 구축해보았다. Maven과 Tomcat으로 웹 개발 환경 구축하기(+ IntelliJ) 1. 준비물 본격적으로
nooblette.tistory.com
- 위 블로그대로 따라하니 해-결
- 이렇게 선택할 수 있는 artifact가 뜬다.
Artifact란 IntelliJ IDEA 내에서 Java 프로그램을 jar 파일로 뽑아낼 때, 해당 jar 파일에 어떤 내용이 포함될 것인지, 어디에 저장될 것인지를 정하는 기능
1.3. 원인
Maven 플러그인이 제대로 설정되지 않아서 그런 것 같다.
원래 내가 프로젝트를 만들 때 Build System: Maven을 한 후, pom.xml 파일에 플러그인을 직접 넣어줬는데
버전이 안 맞는다든지..?
그런데 참고한 블로그에서는 프로젝트 생성 시, Maven Archetype으로 생성해서 pom.xml 파일에 maven 관련 플러그인들이 자동으로 들어가 있었다.
이슈 2
2.1. 문제 상황
- Tomcat도 잘 돌아가고, 이제 Servlet을 실행했는데 404 에러가 났음. 우우우...
2.2. 해결 과정
- 구글링 하다 발견!! java.* 에서 jakarta.* 로 API 패키지명이 변경됐다고 한다. (Tomcat 10부터는 jakarta로 import 해야 함)
- 나는 Tomcat 10을 사용해서 pom.xml 에 java.servlet.xxx로 추가했던 dependency를 jakarta.servlet.xxx로 싹 다 바꿔주었다.
https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api
요기서 버전 참고함
# 최종 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>webapiexam</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>webapiexam Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- json 라이브러리 databind jackson-core, jackson-annotaion에 의존성이 있음 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>webapiexam</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
2.3. 원인
Tomcat 공식문서에도 젤 위에 대문짝만 하게 나와있음 ㅋㅋ;
실행환경 설정은 항상 어렵다 ㅠ 몇 번 더 삽질 하다보면 익숙해지겠지^^!
'트러블슈팅' 카테고리의 다른 글
[MySQL] Docker로 Mac M1에 MySQL 설치하기 (0) | 2023.11.05 |
---|---|
[Spring Boot] Lombok cannot find symbol 에러 (0) | 2023.10.12 |
[JavaScript] addEventListener is not a function (0) | 2023.07.14 |
[Spring MVC] No Mapping for GET WEB-INF/views/main.jsp (0) | 2023.06.26 |