Notice
Recent Posts
Link
Tags
- jpa
- select
- 문자열
- nginx
- 프로그래머스
- java
- 1차원 배열
- spring
- Docker
- Git
- Django
- 스프링
- spring security 6
- 스프링부트
- PYTHON
- 데이터베이스
- spring boot
- DI
- mysql
- spring mvc
- springboot
- SSL
- ORM
- 자바
- sql
- @transactional
- session
- string
- AWS
- join
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Archives
개발하는 자몽
[Tomcat Error] java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid 본문
Java
[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' 카테고리의 다른 글
[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