java - JSP 编译错误 - token "throws"上的语法错误,预期抛出

标签 java jsp tomcat taglib

我们有一个托管在 Tomcat 7 服务器上的 JSP 应用程序。作为构建过程的一部分,我们运行了一些通过 HtmlUnit 调用这些 JSP 页面的自动化测试。 当某些测试试图访问 JSP 文件时,我们注意到间歇性的 JSP 编译错误。这似乎与任何特定测试无关。

例如,我们遇到的最后一个编译错误是:

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [1] in the generated java file: [/tmp/myproject/work/Tomcat/localhost/_/org/apache/jsp/WEB_002dINF/jsp/admin/home_jsp.java]
Syntax error on tokens, delete these tokens

An error occurred at line: [97] in the generated java file: [/tmp/myproject/work/Tomcat/localhost/_/org/apache/jsp/WEB_002dINF/jsp/admin/home_jsp.java]
Syntax error on token(s), misplaced construct(s)

An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on tokens, delete these tokens
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on token "}", delete this token
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on token "(", ; expected
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on token(s), misplaced construct(s)
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on token(s), misplaced construct(s)
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jspf/taglibs.jspf
Syntax error on token "throws", throw expected
1: <%@ taglib uri="http://www.springframework.org/security/tags" prefix="authz" %>
2: <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
3: <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
4: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


An error occurred at line: 1 in the jsp file: /WEB-INF/jsp/admin/home.jsp
Syntax error on token "}", delete this token
1: <%@ include file="/WEB-INF/jspf/taglibs.jspf" %>
2: <html>
3: <head>
4:     <title>Administrator Home</title>

除了我们负责运行这些系统测试的环境之外,我们在本地环境和任何其他环境中都没有看到这些错误,是的,我们使用相同的代码库。

这些错误似乎只在第一次访问 JSP 文件时发生,因为我可以在 Tomcat jsp 工作目录中看到有一个 home_jsp.java 和一个 home_jsp.class,这意味着 jsp 文件已被正确翻译到 servlet 类中,然后在稍后正确编译。另外,我查看了 home_jsp.java 文件,也没有看到任何与 JSP 编译器报告的编译错误相对应的明显错误。

感谢任何有助于解决此问题的想法/建议。

干杯, 奥利维尔

最佳答案

我们不知道我们有 2 个 Tomcat 实例实际上使用同一个 JSP 工作目录。

我们对此进行了更改,以便每个实例都使用自己的工作文件夹,此后我们再也没有遇到过这个问题。

这并没有给我们真正的根本原因,但至少它已经解决了我们的问题。

关于java - JSP 编译错误 - token "throws"上的语法错误,预期抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40549062/

相关文章:

java - 在jsp中传递变量时出错?

java - PDFBox 1.8.10 : Fill and Sign PDF produces invalid signatures

java - 如何在 Android 中使用计时器?

java - 错误 : unchecked call to DefaultComboBoxModel(E[])

java - 是否可以在 jsp 2.0 自定义标记内获取调用页面名称?

java - 获取Arraylist填写选项列表(Model To Servlet To Jsp)

java - 在 RestEasy 和 Tomcat 中处理基本/base64 安全 401 异常

java - 使用 jdk 1.6 的 Web 服务

java - JSP 页面无法工作 : java. lang.ClassNotFoundException : org. apache.jsp 和 useBean 类属性的值无效

java - TomEE Intellij 理念 : Remote deploy