작성
·
324
0
스프링부트에서도 아무문제 없었고 war파일 만들어서 윈도우 cmd로 실행해서 배포시에는 아무문제없이 돌아갔는데 aws ec2에서 하면 이런 오류가 뜨네요
도저히 해결 못하겠습니다..
이것 저것 찾아봤을 때 그나마 비슷한 현상의 해결법이 WEB-INF/lib 에서 jsp-api.jar이랑 servlet-api.jar 파일이 있으면 삭제하라고 해서 해당 경로를 봤는데 해당 파일이 없는거 보면 이 문제는 아닌 거 같고 아무리 검색 해봐도 모르겠습니다
2024-03-26T17:16:53.768Z ERROR 2046 --- [io-8080-exec-53] o.s.b.w.servlet.support.ErrorPageFilter : Forwarding to error page from request [/mainpage] due to exception [Failed to load or instantiate TagLibraryValidator class: [org.apache.taglibs.standard.tlv.JstlCoreTLV]]
org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: [org.apache.taglibs.standard.tlv.JstlCoreTLV]
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:54) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:301) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:143) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:368) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:196) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:487) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Parser.parse(Parser.java:138) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:106) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:396) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) ~[jasper.jar:10.1.20]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) ~[jasper.jar:10.1.20]
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) ~[jasper.jar:10.1.20]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396) ~[jasper.jar:10.1.20]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380) ~[jasper.jar:10.1.20]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328) ~[jasper.jar:10.1.20]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[servlet-api.jar:6.0]
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
ㄱㅂㅈ님, 문제 상황을 듣고 보니 Spring Boot를 사용하여 AWS EC2에서 WAR 파일을 배포할 때 발생하는 오류 같습니다. 오류 메시지를 보면, org.apache.taglibs.standard.tlv.JstlCoreTLV
클래스를 로드하거나 인스턴스화하는 데 실패한 것으로 나타납니다. 이는 JSP 태그 라이브러리 관련 문제로 보여지는데요.
AWS EC2 인스턴스에서 배포 시에 발생하는 이 오류는 몇 가지 원인으로 인해 발생할 수 있습니다. 하지만 주어진 정보에 따르면, Spring Boot 애플리케이션에서 내장된 서블릿 컨테이너를 사용할 때 JSP 지원과 관련해 제한사항이 있습니다. 예를 들어, Jetty와 Tomcat을 사용할 경우 WAR 패키징을 사용해야 하며, Undertow는 JSP를 지원하지 않습니다. 또한, 단독 실행 가능한 JAR 파일로는 JSP를 지원하지 않습니다.
여기서 AWS EC2에서 WAR 파일을 배포하는 경우 해당 문제를 해결하기 위한 정보는 직접적으로 제공되지 않습니다. 그러나, AWS EC2에서 Java 웹 애플리케이션을 배포하는 과정에서는 Tomcat과 같은 서블릿 컨테이너 또는 AWS Elastic Beanstalk과 같이 더 상위 수준의 관리형 서비스를 사용합니다.
배포하는 방식에 따라 다를 수 있으나, AWS 를 통해 Spring Boot 애플리케이션을 배포할 때는, AWS Elastic Beanstalk을 사용하는 경우에는 특별한 설정 없이 war 파일을 그대로 사용할 수 있습니다. (참고 URL: AWS Elastic Beanstalk 사용하기)
해결 방안으로는, 먼저 사용하고 있는 서블릿 컨테이너가 JSP를 올바르게 지원하는지 확인하고, EC2 인스턴스에 올바른 종속성 및 라이브러리가 포함되어 있는지 점검하는 것이 중요합니다. 또한, AWS Elastic Beanstalk 같은 서비스를 사용할 때 WAR 파일 배포 설정을 점검하는 것도 도움이 될 수 있습니다.
AWS EC2 또는 Elastic Beanstalk을 사용한 배포에 대해 더 구체적인 설정이나 오류 해결 방법이 필요한 경우, AWS 공식 문서를 참고하시길 바랍니다.