我使用旧的Eclipse(Helios)和旧的Tomcat(5.5)进行大型Web项目。更新到Tomcat 6后,此代码停止工作:
short foo = 3;
Integer bar = foo;
显然,这是根据Java语言规范[1]的无效代码,并且旧的Eclipse编译器中存在一个错误,因此它没有报告它。 New Eclipse(Kepler)将其报告为错误。
我不太确定为什么它停止使用新的Tomcat,因为它使用与旧Tomcat相同的Java编译器,但代码无效,我想在整个项目中修复它。
首先,我尝试在新Eclipse中验证整个项目,以便列出所有带有此错误的.jsp文件。但是,Eclipse中的此验证似乎不能很好地工作,因为有时它会检测文件中的多个(现有)错误,有时在同一文件中报告没有错误(10秒后没有更改)。
我尝试的下一件事是将项目导入NetBeans(7.4)并尝试在此处列出这些错误。当我打开一个有错误的文件时,会检测到它:“incompatible types: short cannot be converted to Integer
”。但是,当我列出“操作项”列表中的所有错误时,我找不到这些错误(尽管我将过滤器设置为包含编译器错误)。
我认为列出项目中所有JSP文件中的所有Java错误都很容易,但事实证明并非如此。我该怎么办?
答案 0 :(得分:0)
解决这个问题的方法是编译项目中的所有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