jfinal+jetty启动的问题

项目比较老,用的jsp,所以一直在用jetty。今天调试的时候发现了一个很奇怪的问题,昨天晚上还好好的,今天调试就各种报错。

PWC6199: Generated servlet error:
程序包javax.servlet.jsp.tagext不存在


	at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:129)
	at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:299)
	at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:392)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
	at org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:103)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:99)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
	at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:203)
	at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:73)
	at com.jfinal.render.JspRender.render(JspRender.java:67)
	... 32 more

郁闷了一上午了,因为啥都没动啊,昨天晚上调试的还很爽,怎么今天说报错就报错了。突然灵光一闪,不对,我确实动了一个地方。

昨天晚上的代码:

JFinal.start("src/main/webapp", 8080, "/", 5);

然后今天我改成了:

JFinal.start("src/main/webapp", 8080, "/", 0);

没错,只是把scanIntervalSeconds调了,因为我不想使用热部署,eclipse自带的debug热部署我个人觉得就足够用了,所以就把扫描间隔从5调成了0,但是就这么一调,导致出错了。

在这个灵感的感召下,我再调成5,ok,一切正常。再调成0,又歇菜。

我觉得这个问题相当诡异啊,理论上不应该啊。

评论区

JFinal

2019-09-12 11:57

刚看了一下最新版 jetty-server 源码,scanIntervalSeconds 这个参数看不出来对 JSP 支持有任何影响

如果你不想要热加载,将 scanIntervalSeconds 改成一个十分大的数也可以,例如 999999