我有一个遗留应用程序我正在从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>
这在我的本地计算机上立即解决了,但在我们正在运行的测试服务器上没有解决。 我无法在任何地方看到具体的解决方案。请帮助:)
答案 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错误。