【发布时间】:2013-03-31 18:30:32
【问题描述】:
我收到以下错误:
SEVERE: Servlet.service() for servlet jsp threw exception
javax.el.ELException: The identifier [case] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.
这是由于在 tomcat 7 中默认 SKIP IDENTIFIER CHECK 功能为假(在 tomcat 6 及以下版本中为真),我在正则表达式中使用“case”,而 case 是标识符,所以它抛出错误。
我找到了以下解决方案: javax.el.ELException: The identifier [return] is not a valid Java identifier
但这对我不起作用,因为我不想更改我的代码。所以我想要将 tomcat 7 配置为 SKIP IDENTIFIER CHECK 为 true 的解决方案。
即使经过大量的谷歌搜索,我也没有找到办法做到这一点。我正在使用eclipse juno和tomcat 7,请帮我考虑一下。
【问题讨论】:
-
我认为您需要强制修复。就个人而言,我会对所有包含违规文本的 .jsp 文件进行文件搜索。然后,我将使用搜索结果系统地将每个实例替换为适当的 param['myParam'] 版本。最后,我会重新运行文件搜索以确保没有遗漏任何内容。我过去曾重构过这样的代码,一旦你掌握了节奏,它通常会很快。
-
是的@CodeChimp,这是我的最后一个选择,但我需要在项目的某些模块中更改它,因为现在我没有时间这样做,这个错误是因为我更改了我的 tomcat 6 to tomcat 7. 我想要问题中描述的解决方案。
-
我认为没有解决方案。您正在使用一个关键词,这在技术上一开始是错误的。 Tomcat 7 似乎只是关闭了问题的大门。您的选择是花一个小时进行搜索和替换或再次备份到 TC6。
-
参考这个tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html,在文档中他们已经指定了那个参数,我想知道我必须在哪里设置这个参数。
-
我猜是 catalina.properties,因为它是 Tomcat 中唯一能想到的属性文件。