Notice
Recent Posts
Link
Tags
- jpa
- join
- spring security 6
- string
- SSL
- 스프링부트
- DI
- 1차원 배열
- static
- java
- 데이터베이스
- springboot
- mysql
- select
- nginx
- 자바
- @transactional
- sql
- Django
- spring boot
- PYTHON
- 문자열
- AWS
- ORM
- 스프링
- Docker
- hibernate
- 프로그래머스
- spring mvc
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Archives
개발하는 자몽
[Tomcat Error] java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid 본문
Java & Kotlin
[Tomcat Error] java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid
jaamong 2023. 4. 12. 15:18내장 톰캣을 사용하려고 하다가 아래와 같은 에러가 발생했다.
Caused by: java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid
원인은 tomcat.addContext(contextPath, docBase)를 하고 webapps 디렉토리가 없어서 발생한 문제다. 경로 설정에 문제가 있는 모양이다...
에러 해결 전 코드 (기존 코드)
import hello.servlet.HelloServlet;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
public class EmbedTomcatServletMain {
public static void main(String[] args) throws LifecycleException {
System.out.println("EmbedTomcatServletMain.main");
//톰캣 설정
Tomcat tomcat = new Tomcat();
Connector connector = new Connector();
connector.setPort(8080);
tomcat.setConnector(connector);
//서블릿 등록
Context context = tomcat.addContext("", "/");
tomcat.addServlet("", "helloServlet", new HelloServlet());
context.addServletMappingDecoded("/hello-servlet", "helloServlet");
tomcat.start();
}
}
참고! HelloServlet은 HttpServlet을 상속한 커스텀 서블릿이다.
에러 해결 코드
import hello.servlet.HelloServlet;
import org.apache.catalina.Context;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import java.io.File;
public class EmbedTomcatServletMain {
public static void main(String[] args) throws LifecycleException {
System.out.println("EmbedTomcatServletMain.main");
//톰캣 설정
Tomcat tomcat = new Tomcat();
Connector connector = new Connector();
connector.setPort(8080);
tomcat.setConnector(connector);
//서블릿 등록
Context context = tomcat.addContext("", "/");
// == 코드 추가 시작 ==
File docBaseFile = new File(context.getDocBase());
if (!docBaseFile.isAbsolute()) {
docBaseFile = new File(((Host) context.getParent()).getAppBaseFile(), docBaseFile.getPath());
}
docBaseFile.mkdirs();
// == 코드 추가 종료 ==
tomcat.addServlet("", "helloServlet", new HelloServlet());
context.addServletMappingDecoded("/hello-servlet", "helloServlet");
tomcat.start();
}
}
위 코드를 추가하면 webapps 디렉토리가 생성된다.
참고
'Java & Kotlin' 카테고리의 다른 글
[TIL / JPA] 영속성 컨텍스트 (0) | 2024.06.29 |
---|---|
Collections, Collector, stream의 함수 (0) | 2023.05.03 |
리플렉션(Reflection) (0) | 2023.03.28 |
동시성 문제와 쓰레드 로컬 (0) | 2023.03.22 |
Bean Validation - HTTP 메시지 컨버터 (0) | 2023.03.13 |
Comments