我在一个大型 Web 项目中使用了旧版 Eclipse (Helios) 和旧版 Tomcat (5.5)。更新到 Tomcat 6 后,此代码停止工作:
short foo = 3;
Integer bar = foo;
显然,根据 Java 语言规范[1],这是无效代码,并且旧的 Eclipse 编译器中存在错误,因此没有报告该错误。新的 Eclipse (Kepler) 将其报告为错误。
我不太清楚为什么它停止与新 Tomcat 一起工作,因为它使用与旧 Tomcat 相同的 Java 编译器,但代码无效,我想在整个项目中修复它。
首先,我尝试在新的 Eclipse 中验证整个项目,以便它会列出所有出现此错误的 .jsp 文件。然而,Eclipse 中的这种验证似乎工作得不太好,因为有时它会检测到文件中的多个(现有)错误,有时会报告同一文件中没有错误(没有更改,10 秒后)。
我尝试的下一步是将项目导入 NetBeans (7.4) 并尝试在此处列出这些错误。当我打开一个有错误的文件时,它检测到:“不兼容的类型:short 无法转换为整数
”。但是,当我在“操作项”列表中列出所有错误时,我找不到这些错误(尽管我将过滤器设置为包含编译器错误)。
我认为列出项目中所有 JSP 文件中的所有 Java 错误会很容易,但事实证明并非如此。我该怎么做?
最佳答案
这个问题的解决方案是编译项目中的所有JSP文件(即为它们生成Java文件),然后检查生成文件的错误。
NetBeans 可以选择预编译所有 JSP 文件,但这对我来说不起作用,因为它在遇到第一个有错误的 Java 文件后停止(也许有办法绕过这个问题?)。
另一个解决方案可能是配置 Apache Maven 来构建整个项目,但我没有尝试这个,因为一位同事想出了一个很好的快速解决方案:
为项目中的每个 JSP 文件生成一个 wget 请求并运行所有这些请求。 wget 由于未登录而无法真正访问页面,这并不重要,它只是“接触”页面并强制 Tomcat 生成 Java 文件。
类似这样的东西(linux/cygwin):
find jsp -name '*.jsp' -printf 'http://localhost:8080/App/%p\n' > tmp/urls
wget -q --proxy=off --spider -i tmp/urls
关于java - 列出 JSP 文件中的所有 Java 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013519/