最近使用GAE开发一个小应用,开发过程中发现几个问题在这里做下笔记备忘,同时希望对其他人也有所帮助。
问题一:只要在项目中添加JSP文件,再进行Deploy时就会报如下错误
Scanning for jsp files.
Compiling jsp files.
Compiling java files.
java.lang.IllegalStateException: cannot find javac executable based on java.home, tried "E:\Program Files\Java\jre1.5.0_16\bin\javac.exe" and "E:\Program Files\Java\bin\javac.exe"
解决办法:修改Eclipse的JRE路径配置(默认情况下Eclipse使用jre下的JAR包,解决上面的问题我们需要把Eclipse依赖的JAR包指向JDK下),具体步骤window->preferences->java->install JREs
问题二:jsp不支持EL
产生这个问题的原因有两个,GAE Eclipse插件生成的项目默认是使用servlet2.5的标准,而2.5版本是默认忽略EL的,所以JSP中使用EL会失效。另一个原因,插件生成的WEB.XML强制绑定了servlet2.3的DTD,如下所示
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
servlet2.3版本是不支持EL的。所以上面这个原因才是真正导致EL在JSP中被忽略的原因。
我解决这个问题的办法是将WEB.XML的版本制定为servlet2.4版本,因为servlet2.4默认支持EL。操作方式就是去掉上面的DTD,然后加上下面的schema定义
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">