无法让Glassfish使用版本7编译JSP

时间:2014-01-22 21:33:40

标签: java jsp java-ee servlets glassfish

我有一个遗留应用程序我正在从Glass迁移到运行在Glassfish服务器上的Liferay。

我在尝试将应用程序部署到Glassfish时遇到了错误:

* org.glassfish.deployment.common.DeploymentException:JSP编译错误:org.apache.jasper.JasperException:

PWC6033:JSP的Javac编译出错

PWC6199:生成的servlet错误: -source 1.5不支持菱形运算符   (使用-source 7或更高版本来启用菱形运算符)

PWC6199:生成的servlet错误: -source 1.5不支持try-with-resources   (使用-source 7或更高版本来启用try-with-resources)

PWC6199:生成的servlet错误: 某些输入文件使用未经检查或不安全的操作。

PWC6199:生成的servlet错误: 使用-Xlint重新编译:取消选中以获取详细信息。

- PWC6033:JSP的Javac编译出错 PWC6199:生成的servlet错误: -source 1.5不支持菱形运算符   (使用-source 7或更高版本启用菱形运算符)*

我在glassfish-web.xml中添加了一个部分

<jsp-config> 
<property name="keepgenerated" value="true"> 
<description>Keep a copy of the generated servlet class' java code.</description> 
</property> 
<property name="compilerSourceVM" value="7"/> 
<property name="compilerTargetVM" value="7"/> 
</jsp-config> 

这在我的本地计算机上立即解决了,但在我们正在运行的测试服务器上没有解决。 我无法在任何地方看到具体的解决方案。请帮助:)

1 个答案:

答案 0 :(得分:2)

在Domain下的GlassFish管理控制台 - &gt;应用程序配置有一个预编译JSP的选项(仅部署生成的类文件)。 它在测试服务器上被选中,并且glassfish-web.xml中的指令被忽略。

要诊断我创建了一个简单的1页应用程序,index.jsp看起来像这样:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.Map,java.util.List,java.util.ArrayList"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


        <title>GlassFish JSP Page</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <%List <String> testerList = new ArrayList<>(); 
      testerList.add("hello");
    %>  
  </body>
</html> 

选择了Precompile选项后,它产生了可怕的PWC6033:即使使用

,也会出现JSP错误的Javac编译错误
<property name="compilerSourceVM" value="7"/> 
<property name="compilerTargetVM" value="7"/> 

在glassfish-web.xml中设置。取消选择预编译选项后,可以在测试服务器上部署应用程序和页面,而不会出现错误。我相信这是一个GlassFish错误。