这是一个带有Maven管理的Java项目,并在本地运行Jetty。
当我试图在.jspf
文件中运行lambda时,遇到了一个问题:Lambda expressions are allowed only at source level 1.8 or above
。
我的设置:
<maven.compiler.source>1.8</maven.compiler.source>
和<maven.compiler.target>1.8</maven.compiler.target>
jetty-jspc-maven-plugin
插件,我在<configuration>
中将sourceVersion
和targetVersion
设置为1.8我遗漏了什么吗?还是Java 8根本不可能使用JSP / jspc?
发布于 2020-09-25 13:59:33
现有的https://github.com/jetty-project/embedded-jetty-jsp有一个设置compilerSourceVM
和compilerTargetVM
以允许*.jsp
文件使用Java8特性的示例,比如lambda的特性。
基本上配置您的JettyJspServlet
// Create / Register JSP Servlet (must be named "jsp" per spec)
ServletHolder holderJsp = new ServletHolder("jsp", JettyJspServlet.class);
holderJsp.setInitOrder(0);
holderJsp.setInitParameter("logVerbosityLevel", "DEBUG");
holderJsp.setInitParameter("fork", "false");
holderJsp.setInitParameter("xpoweredBy", "false");
holderJsp.setInitParameter("compilerTargetVM", "1.8");
holderJsp.setInitParameter("compilerSourceVM", "1.8");
holderJsp.setInitParameter("keepgenerated", "true");
servletContextHandler.addServlet(holderJsp, "*.jsp");
我接着添加了一个lambda.jsp,它在JSP中使用一个简单的lambda来证明它。(lambda和jsp的JspWriter混在一起相当复杂,不是后视眼的最佳选择)
https://stackoverflow.com/questions/64062666
复制相似问题