강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của angma
angma

câu hỏi đã được viết

Spring Boot - Nguyên lý cốt lõi và ứng dụng

Embedded Tomcat 5 - Build và Deploy 2

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

Viết

·

2.2K

·

Đã chỉnh sửa

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();
	}
}

 

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

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

springspring-bootprometheusgrafana

Câu trả lời 2

3

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

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

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

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

0

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

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

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

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

감사합니다.

 

Hình ảnh hồ sơ của angma
angma

câu hỏi đã được viết

Đặt câu hỏi