首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSP文件中的Lambda表达式不会编译

JSP文件中的Lambda表达式不会编译
EN

Stack Overflow用户
提问于 2016-10-14 04:36:48
回答 1查看 9.1K关注 0票数 10

我尝试过在堆栈溢出中提到的大多数建议,但还没有找到解决方案。我遇到的错误如下。

代码语言:javascript
运行
复制
An error occurred at line: 379 in the jsp file: /application-new-project_process.jsp
Lambda expressions are allowed only at source level 1.8 or above 

我正在使用IntelliJ IDEA 2016.2并应用了这些设置。

Project StructureProjectProject SDK to 1.8 (java version "1.8.0_102")

Project StructureProjectProject Language Level to 8.0 - Lambdas, type annotations etc.

SettingsBuild, Execution, DeploymentCompilerJava CompilerProject bytecode version to 1.8

SettingsBuild, Execution, DeploymentCompilerJava CompilerTarget bytecode version to 1.8

我使用的是Tomcatv8.0.36,并为JSP提供了以下内容。

代码语言:javascript
运行
复制
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param> 
        <param-name>compiler</param-name> 
        <param-value>modern</param-value> 
    </init-param> 
    <init-param> 
        <param-name>compilerSourceVM</param-name> 
        <param-value>1.8</param-value> 
    </init-param> 
    <init-param> 
        <param-name>compilerTargetVM</param-name> 
        <param-value>1.8</param-value> 
    </init-param> 
    <init-param> 
        <param-name>suppressSmap</param-name> 
        <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup>
</servlet>

如有任何建议,将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-12-05 21:35:56

使用Spring和Tomcat的用户的最新答案。由于Spring /MVC中没有Tomcat的XML文件,所以我调整了从这些春天的医生链接的代码,以便在我的基本应用程序类中创建一个定制bean。修复在IntelliJ和Gradle CLI中使用JSP中的Java8语法所引起的问题。

如果使用Spring1.x,则添加EmbeddedServletContainerCustomizer bean:

代码语言:javascript
运行
复制
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return (ConfigurableEmbeddedServletContainer container) -> {
        TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
        JspServlet servlet = tomcat.getJspServlet();
        Map<String, String> jspServletInitParams = servlet.getInitParameters();
        jspServletInitParams.put("compilerSourceVM", "1.8");
        jspServletInitParams.put("compilerTargetVM", "1.8");
        servlet.setInitParameters(jspServletInitParams);
    };
}

如果使用Spring2.x,则添加WebServerFactoryCustomizer bean:

代码语言:javascript
运行
复制
@Bean
public WebServerFactoryCustomizer containerCustomizer() {
    return (WebServerFactoryCustomizer<TomcatServletWebServerFactory>) factory -> {
        Map<String, String> jspServletInitParams = factory.getInitParameters();
        jspServletInitParams.put("compilerSourceVM", "1.8");
        jspServletInitParams.put("compilerTargetVM", "1.8");
        factory.getJsp().setInitParameters(jspServletInitParams);
    };
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40035001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档