Spring Boot 出現java.lang.NoClassDefFoundError: org/apache/tomcat/util/security/Escape錯誤
阿新 • • 發佈:2019-02-17
Spring Boot整合Jsp的過程中,編譯報出如下錯誤。
2018-03-15 22:04:45.166 ERROR 7240 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [java.lang.NoClassDefFoundError: org/apache/tomcat/util/security/Escape] with root cause
java.lang.ClassNotFoundException: org.apache.tomcat.util.security.Escape
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_111]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_111]
at java.lang.ClassLoader .loadClass(ClassLoader.java:357) ~[na:1.8.0_111]
at org.apache.jasper.compiler.JspUtil.getExprInXml(JspUtil.java:85) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.PageDataImpl$SecondPassVisitor.printAttributes(PageDataImpl.java:736) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache .jasper.compiler.PageDataImpl$SecondPassVisitor.appendTag(PageDataImpl.java:470) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.PageDataImpl$SecondPassVisitor.appendTag(PageDataImpl.java:454) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.PageDataImpl$SecondPassVisitor.visit(PageDataImpl.java:266) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Node$Root.accept(Node.java:470) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2389) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.PageDataImpl.<init>(PageDataImpl.java:79) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1862) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:224) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:385) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:362) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:346) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) ~[tomcat-embed-jasper-9.0.6.jar:9.0.6]
經檢查發現,是由於tomcat-embed-jasper依賴只能設定為執行時依賴,將build.gradle檔案依賴。
compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.6'
修改為
runtime ("org.apache.tomcat.embed:tomcat-embed-jasper")