首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat使用Java8SDK,但不使用Java 8语言特性编译JSP。怎么修呢?

Tomcat使用Java8SDK,但不使用Java 8语言特性编译JSP。怎么修呢?
EN

Stack Overflow用户
提问于 2019-06-28 12:47:40
回答 1查看 3.2K关注 0票数 2

我想我现在的问题是Tomcat的配置问题。我正在为Tomcat 8.5.8开发一个Java和JSP应用程序,并且已经开始使用Java 8语言特性(特别是方法引用和流)。在运行jdk1.8.0_211的本地机器上,新代码可以工作,在运行时编译JSP,就像它打算做的那样。

在我们的测试服务器(RH )上,新的JSP无法编译(但是应用程序的其余部分可以工作)。错误是

代码语言:javascript
复制
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 135 in the jsp file: /jsp/directory/page.jsp
Method references are allowed only at source level 1.8 or above

我没有亲自设置服务器,但它运行的是Java 8的一些构建,并且具有相同的Tomcat版本(8.5.8),因此我怀疑某个地方有一个配置文件告诉它在旧的语言级别上编译JSP。(证据表明,它知道什么是方法引用,但拒绝编译它;异常而不是错误。)

告诉Tomcat在较旧的语言级别编译JSP的配置可能隐藏在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 13:00:28

根据https://tomcat.apache.org/tomcat-8.0-doc/jasper-howto.html

实现Jasper的servlet是使用全局$CATALINA_BASE/conf/web.xml中的init参数配置的。

compilerSourceVM -源文件兼容的JDK版本是什么?(默认值: 1.7) compilerTargetVM -生成的文件兼容什么版本?(默认值: 1.7)

为了给出一个示例,如果您的web.xml文件包含以下代码,它将将JSP编译到1.8语言级别:

代码语言:javascript
复制
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

    <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>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56807251

复制
相关文章

相似问题

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