inflearn logo
강의

Course

Instructor

Spring Boot - Core Principles and Applications

Embedded Tomcat 5 - Build and Deployment 2

SEVERE: A child container failed during start LifecycleException: Failed to start component 해결방법

2189

Angma

1 asked

10

java -jar embed-0.0.1-SNAPSHOT.jar

아래와 같이 에러가 발생하는 경우

org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@247bddad]
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:252)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:926)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485)
        at hello.embed.EmbedTomcatSpringMain.main(EmbedTomcatSpringMain.java:36)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@247bddad]
        at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4829)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4962)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
        ... 16 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\embed\build\libs\tomcat.8080\webapps\] is not valid
        at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:777)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:734)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        ... 25 more

main 클래스에 코드를 수정하면 정상적으로 에러가 발생하지 않습니다.

public class EmbedTomcatSpringMain {

	public static void main(String[] args) throws LifecycleException, IOException {
		System.out.println("EmbedTomcatSpringMain.main");

		// 톰캣 설정
		// 톰캣 설정
		Tomcat tomcat = new Tomcat();
		...

		// 스프링 MVC 디스패처 서블릿 생성, 스프링 컨테이너 연결
		...


		String docBase = Files.createTempDirectory("tomcat-basedir").toString();

		// 디스패처 서블릿 등록
		Context context = tomcat.addContext("", docBase);


		...
		tomcat.start();
	}
}

 

참고)
맥북 사용자가 아닌 윈도우 사용자이기 때문에
윈도우에서 나타나는 에러를 공유드렸습니다.

맥북은 따로 확인하지 못하기 때문에 공유한 부분에 대해 양해해주세요.

spring spring-boot prometheus grafana

Answer 2

3

xxxxxseed

윈도우인데 동일한 오류가 발생했습니다.

작성자님 글 확인하기전에 혼자 헤메다 tomcat.8080 폴더 까지는 있는데 그 하위에 webapps폴더가 없는걸 확인하고 수동으로 폴더 생성후에

java -jar embed-0.0.1-SNAPSHOT.jar 를 했더니 실행되는걸 확인했습니다.

후에 작성자님이 알려주신 코드를 추가하고 빌드 해보니 webapps 경로가 다르지만 정상 실행되는것을 확인했습니다. 공유 감사합니다!

0

codetrain999

안녕하세요, Angma 님! 공식 서포터즈 codesweaver 입니다.

Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\embed\build\libs\tomcat.8080\webapps\] is not valid

톰캣 경로가 유효한지 확인해주세요. 그리고 톰캣 설정 중 server.xml 을 열어 리소스 경로 등이 올바른지 확인하여 주세요.

그래고 해결이 안될 경우 톰캣이 강의와 동일한 버전인지 확인하여 주세요.

감사합니다.

 

보안이 엄격한 데이터

0

73

1

MyProperties 자체를 클라이언트 코드에서 사용

1

43

1

http://localhost:8080/actuator/prometheus

0

85

3

jar 추가에대한 질문드려도될까요?

0

64

1

build.gradle bom link 변경

0

65

2

@Counted 초기화

0

47

1

@Validated를 적용해도 빈 검증이 안되는 경우에 대한 조치 공유..

0

101

2

springboot에서 actuator없이 micrometer를 사용할수 있나요?

0

67

1

@Configuration 질문드립니다.

0

84

2

[공유] 터미널 말고 IDE 에서 jar 실행하기

0

101

1

localhost:8080/hello-servlet 404오류

0

123

2

내장톰캣2 서블릿 톰켓 실행이 안됩니다

1

154

2

최대 Tomcat 스레드 수를 확인하는 지표

0

160

1

mac m2에서 startup.sh 실행후 아무 반응이 없습니다.

0

94

2

내장 톰캣 실행 오류 관련 질문드립니다.

0

158

1

스프링 발전 과정들도 자세히 알아둬야하나요??

1

127

1

스프링부트 ioc 컨테이너 갯수

0

89

1

404 페이지

0

133

3

actuator 호출시 타임스탬프 질문

0

90

1

순수 라이브러리 사용하기 2 - memory-v1

0

125

1

외부설정 @ConfigurationProperties의 내부 클래스에서 static을 사용하는 이유를 알고 싶습니다.

0

105

1

서블릿 컨테이너 초기화1 강의 관련 질문입니다~

0

93

1

Thread Config Max 패널 설정 변경 질문

0

128

1

스프링 액츄에이터 shutdown 엔드포인트 활성화가 안됩니다.

0

107

1