繁体   English   中英

嵌入式 Tomcat 服务于 JSP

[英]Embedded Tomcat to serve JSP

我正在尝试在应用程序中嵌入 Tomcat 以提供 static 内容和 JSP。 我的代码如下:

        tomcat = new Tomcat();
        tomcat.setBaseDir(plugin.getDataFolder().getAbsolutePath());
        tomcat.setPort(80);

        Service service = tomcat.getService();
        service.addConnector(getSslConnector());

        Context ctx = tomcat.addContext("/", root.getAbsolutePath());

        Wrapper defServlet = ctx.createWrapper();
        defServlet.setName("default");
        defServlet.setServletClass("org.apache.catalina.servlets.DefaultServlet");
        defServlet.addInitParameter("debug", "0");
        defServlet.addInitParameter("listings", "false");
        defServlet.setLoadOnStartup(1);
        ctx.addChild(defServlet);
        ctx.addServletMapping("/", "default");

        Wrapper jspServlet = ctx.createWrapper();
        jspServlet.setName("jsp");
        jspServlet.setServletClass("org.apache.jasper.servlet.JspServlet");
        jspServlet.addInitParameter("fork", "false");
        jspServlet.addInitParameter("xpoweredBy", "false");
        jspServlet.setLoadOnStartup(2);
        ctx.addChild(jspServlet);
        ctx.addServletMapping("*.jsp", "jsp");

问题是我在 Tomcat 启动期间得到了这个堆栈跟踪

[01:07:15 INFO]: [org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]] Marking servlet [jsp] as unavailable
[01:07:15 ERROR]: [org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]] Servlet [jsp] in web application [/] threw load() exception
java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) ~[?:?]
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) ~[?:?]
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:545) ~[?:?]
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:526) ~[?:?]
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) ~[?:?]
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044) ~[?:?]
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:985) ~[?:?]
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4875) ~[?:?]
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) ~[?:?]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[?:?]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) ~[?:?]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) ~[?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_271]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_271]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_271]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_271]

当我要求 jsp 时,我收到此错误[org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[jsp]] Servlet [jsp] is currently unavailable

我过去曾与 Tomcat 合作,但要制作 web 应用程序,这是我第一次以这种方式使用它,有人可以帮助我吗?

以下错误应该准确地告诉您出了什么问题:

java.lang.ClassNotFoundException:org.apache.jasper.servlet.JspServlet

您需要检查此 class 是否位于嵌入式 tomcat 的 class 路径上,因为您特别提到了 Z68995FCBF432492D1548 文件夹中的 lib。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM