Java 使用用于eclipse的Google App Engine插件时发生Jsp编译错误

Java 使用用于eclipse的Google App Engine插件时发生Jsp编译错误,java,google-app-engine,jsp,Java,Google App Engine,Jsp,我试图通过在他们的网站上运行这个例子来学习使用Java的Google应用程序引擎的用法。我正在使用Linux中的EclipseJuno作为我的IDE。它成功地在我的本地计算机上托管,但在尝试将其部署到应用程序引擎时,它未能编译JSP文件。 SignGuestbookServlet.java package com.guest.book; import java.io.IOException; import java.util.Date; import java.util.logging

我试图通过在他们的网站上运行这个例子来学习使用Java的Google应用程序引擎的用法。我正在使用Linux中的EclipseJuno作为我的IDE。它成功地在我的本地计算机上托管,但在尝试将其部署到应用程序引擎时,它未能编译JSP文件。
SignGuestbookServlet.java

    package com.guest.book;

import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class SignGuestbookServlet extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private static final Logger log = Logger.getLogger(SignGuestbookServlet.class.getName());

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();
        String guestbookName=req.getParameter("guestbookName")==null?"default":req.getParameter("guestbookName");
        Key guestbookKey=KeyFactory.createKey("Guestbook", guestbookName);
        String content = req.getParameter("content");
        Date date=new Date();
        Entity greeting = new Entity("Greeting",guestbookKey);
        greeting.setProperty("user", user);
        greeting.setProperty("content", content);
        greeting.setProperty("date", date);

        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        datastore.put(greeting);
        resp.sendRedirect("/guestbook.jsp?guestbookName="+guestbookName);
   }
}  
<%@ page import="com.google.appengine.api.users.User" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ page import="com.google.appengine.api.users.User" %>
<%@ page import="com.google.appengine.api.users.UserService" %>
<%@ page import="com.google.appengine.api.users.UserServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreService" %>
<%@ page import="com.google.appengine.api.datastore.Query" %>
<%@ page import="com.google.appengine.api.datastore.Entity" %>
<%@ page import="com.google.appengine.api.datastore.FetchOptions" %>
<%@ page import="com.google.appengine.api.datastore.Key" %>
<%@ page import="com.google.appengine.api.datastore.KeyFactory" %><html>
    <head>
    <title>Guestbook</title>
  </head>

  <body>

<%
    String guestbookName= request.getParameter("guestbookName");
    if(guestbookName==null)
    {
        guestbookName="default";
    }
    pageContext.setAttribute("guestbookName", guestbookName);
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    if (user != null) {
      pageContext.setAttribute("user", user);
%>
<p>Hello, <%= user.getNickname() %>! (You can
<a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sign out</a>.)</p>
<%
    } else {
%>
<p>Hello!
<a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign in</a>
to include your name with greetings you post.</p><br>
<%
    }
%>
<%
        DatastoreService datastore=DatastoreServiceFactory.getDatastoreService();
        Key guestbookKey = KeyFactory.createKey("Guestbook",guestbookName);
        Query query= new Query("Greeting",guestbookKey).addSort("date",Query.SortDirection.DESCENDING);
        List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));
        if(greetings.isEmpty())
        {%>
        <p> Guestbook <%= guestbookName %> has no messages.</p>
        <%
            }
        else
        {
        %>
        <p>Messages in Guestbook <%= guestbookName %>.</p><br>
        <%
            for(Entity greeting : greetings)
            {
                if(greeting.getProperty("user")==null){
        %>
            <p>An anonymous person wrote:</p>
        <%
            }
        else
        {
        %>
        <p><b><%= greeting.getProperty("user") %></b> wrote: </p>
        <% 
        }
        %>
        <blockquote><%= greeting.getProperty("content") %></blockquote>
        <%
            }
        }
        %>  
<form action="/sign" title="Dash" method="post">
    <div><textarea name="content" rows="3" cols="60"></textarea></div>
    <div><input type="submit" value="Post Greeting" /></div>
    <input type="hidden" name="guestbookName" value="<%= guestbookName %>"/>
  </form>
  </body>
</html>  
com.google.appengine.tools.admin.JspCompilationException: Failed to compile jsp files.
Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:238)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:214)
    at org.apache.jasper.JspC.processFile(JspC.java:1181)
    at org.apache.jasper.JspC.execute(JspC.java:1341)
    at com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:40)
Caused by: java.lang.NullPointerException
    at com.google.appengine.tools.development.LocalJspC$LocalCompiler.<clinit>(LocalJspC.java:53)
    ... 7 more
Error while executing: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-labs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/google_sql.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-local-runtime.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-stubs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-tomcat-juli-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-el-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-launcher-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/appengine-local-runtime-shared.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/servlet-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/el-api.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/classes:/tmp/1366711497850-0:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jdo-api-3.0.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-jdt-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-api-labs.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-standard-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jta-1.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-appengine-2.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-core-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-endpoints.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-jsr107cache-1.7.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-tomcat-juli-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-jstl-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jdo-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/geronimo-jpa_2.0_spec-1.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-el-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-launcher-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/asm-4.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jpa-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jsr107cache-1.1.jar: -Dcom.google.apphosting.runtime.use_java6=false com.google.appengine.tools.development.LocalJspC -uriroot /tmp/appcfg7995795059214651808.tmp -p org.apache.jsp -l -v -webinc /tmp/appcfg7995795059214651808.tmp/WEB-INF/generated_web.xml -d /tmp/1366711497850-0 -javaEncoding UTF-8 
guestbook.jsp

    package com.guest.book;

import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class SignGuestbookServlet extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private static final Logger log = Logger.getLogger(SignGuestbookServlet.class.getName());

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();
        String guestbookName=req.getParameter("guestbookName")==null?"default":req.getParameter("guestbookName");
        Key guestbookKey=KeyFactory.createKey("Guestbook", guestbookName);
        String content = req.getParameter("content");
        Date date=new Date();
        Entity greeting = new Entity("Greeting",guestbookKey);
        greeting.setProperty("user", user);
        greeting.setProperty("content", content);
        greeting.setProperty("date", date);

        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        datastore.put(greeting);
        resp.sendRedirect("/guestbook.jsp?guestbookName="+guestbookName);
   }
}  
<%@ page import="com.google.appengine.api.users.User" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ page import="com.google.appengine.api.users.User" %>
<%@ page import="com.google.appengine.api.users.UserService" %>
<%@ page import="com.google.appengine.api.users.UserServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreService" %>
<%@ page import="com.google.appengine.api.datastore.Query" %>
<%@ page import="com.google.appengine.api.datastore.Entity" %>
<%@ page import="com.google.appengine.api.datastore.FetchOptions" %>
<%@ page import="com.google.appengine.api.datastore.Key" %>
<%@ page import="com.google.appengine.api.datastore.KeyFactory" %><html>
    <head>
    <title>Guestbook</title>
  </head>

  <body>

<%
    String guestbookName= request.getParameter("guestbookName");
    if(guestbookName==null)
    {
        guestbookName="default";
    }
    pageContext.setAttribute("guestbookName", guestbookName);
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    if (user != null) {
      pageContext.setAttribute("user", user);
%>
<p>Hello, <%= user.getNickname() %>! (You can
<a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sign out</a>.)</p>
<%
    } else {
%>
<p>Hello!
<a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign in</a>
to include your name with greetings you post.</p><br>
<%
    }
%>
<%
        DatastoreService datastore=DatastoreServiceFactory.getDatastoreService();
        Key guestbookKey = KeyFactory.createKey("Guestbook",guestbookName);
        Query query= new Query("Greeting",guestbookKey).addSort("date",Query.SortDirection.DESCENDING);
        List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));
        if(greetings.isEmpty())
        {%>
        <p> Guestbook <%= guestbookName %> has no messages.</p>
        <%
            }
        else
        {
        %>
        <p>Messages in Guestbook <%= guestbookName %>.</p><br>
        <%
            for(Entity greeting : greetings)
            {
                if(greeting.getProperty("user")==null){
        %>
            <p>An anonymous person wrote:</p>
        <%
            }
        else
        {
        %>
        <p><b><%= greeting.getProperty("user") %></b> wrote: </p>
        <% 
        }
        %>
        <blockquote><%= greeting.getProperty("content") %></blockquote>
        <%
            }
        }
        %>  
<form action="/sign" title="Dash" method="post">
    <div><textarea name="content" rows="3" cols="60"></textarea></div>
    <div><input type="submit" value="Post Greeting" /></div>
    <input type="hidden" name="guestbookName" value="<%= guestbookName %>"/>
  </form>
  </body>
</html>  
com.google.appengine.tools.admin.JspCompilationException: Failed to compile jsp files.
Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:238)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:214)
    at org.apache.jasper.JspC.processFile(JspC.java:1181)
    at org.apache.jasper.JspC.execute(JspC.java:1341)
    at com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:40)
Caused by: java.lang.NullPointerException
    at com.google.appengine.tools.development.LocalJspC$LocalCompiler.<clinit>(LocalJspC.java:53)
    ... 7 more
Error while executing: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-labs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/google_sql.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-local-runtime.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-stubs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-tomcat-juli-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-el-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-launcher-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/appengine-local-runtime-shared.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/servlet-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/el-api.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/classes:/tmp/1366711497850-0:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jdo-api-3.0.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-jdt-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-api-labs.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-standard-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jta-1.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-appengine-2.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-core-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-endpoints.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-jsr107cache-1.7.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-tomcat-juli-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-jstl-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jdo-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/geronimo-jpa_2.0_spec-1.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-el-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-launcher-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/asm-4.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jpa-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jsr107cache-1.1.jar: -Dcom.google.apphosting.runtime.use_java6=false com.google.appengine.tools.development.LocalJspC -uriroot /tmp/appcfg7995795059214651808.tmp -p org.apache.jsp -l -v -webinc /tmp/appcfg7995795059214651808.tmp/WEB-INF/generated_web.xml -d /tmp/1366711497850-0 -javaEncoding UTF-8 

留言簿
你好!(你可以
)

你好!! 在您发布的问候语中加入您的姓名。


留言簿没有消息

留言簿中的信息。


一位匿名人士写道:

写道:

错误日志

    package com.guest.book;

import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class SignGuestbookServlet extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private static final Logger log = Logger.getLogger(SignGuestbookServlet.class.getName());

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();
        String guestbookName=req.getParameter("guestbookName")==null?"default":req.getParameter("guestbookName");
        Key guestbookKey=KeyFactory.createKey("Guestbook", guestbookName);
        String content = req.getParameter("content");
        Date date=new Date();
        Entity greeting = new Entity("Greeting",guestbookKey);
        greeting.setProperty("user", user);
        greeting.setProperty("content", content);
        greeting.setProperty("date", date);

        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        datastore.put(greeting);
        resp.sendRedirect("/guestbook.jsp?guestbookName="+guestbookName);
   }
}  
<%@ page import="com.google.appengine.api.users.User" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ page import="com.google.appengine.api.users.User" %>
<%@ page import="com.google.appengine.api.users.UserService" %>
<%@ page import="com.google.appengine.api.users.UserServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %>
<%@ page import="com.google.appengine.api.datastore.DatastoreService" %>
<%@ page import="com.google.appengine.api.datastore.Query" %>
<%@ page import="com.google.appengine.api.datastore.Entity" %>
<%@ page import="com.google.appengine.api.datastore.FetchOptions" %>
<%@ page import="com.google.appengine.api.datastore.Key" %>
<%@ page import="com.google.appengine.api.datastore.KeyFactory" %><html>
    <head>
    <title>Guestbook</title>
  </head>

  <body>

<%
    String guestbookName= request.getParameter("guestbookName");
    if(guestbookName==null)
    {
        guestbookName="default";
    }
    pageContext.setAttribute("guestbookName", guestbookName);
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    if (user != null) {
      pageContext.setAttribute("user", user);
%>
<p>Hello, <%= user.getNickname() %>! (You can
<a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sign out</a>.)</p>
<%
    } else {
%>
<p>Hello!
<a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign in</a>
to include your name with greetings you post.</p><br>
<%
    }
%>
<%
        DatastoreService datastore=DatastoreServiceFactory.getDatastoreService();
        Key guestbookKey = KeyFactory.createKey("Guestbook",guestbookName);
        Query query= new Query("Greeting",guestbookKey).addSort("date",Query.SortDirection.DESCENDING);
        List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));
        if(greetings.isEmpty())
        {%>
        <p> Guestbook <%= guestbookName %> has no messages.</p>
        <%
            }
        else
        {
        %>
        <p>Messages in Guestbook <%= guestbookName %>.</p><br>
        <%
            for(Entity greeting : greetings)
            {
                if(greeting.getProperty("user")==null){
        %>
            <p>An anonymous person wrote:</p>
        <%
            }
        else
        {
        %>
        <p><b><%= greeting.getProperty("user") %></b> wrote: </p>
        <% 
        }
        %>
        <blockquote><%= greeting.getProperty("content") %></blockquote>
        <%
            }
        }
        %>  
<form action="/sign" title="Dash" method="post">
    <div><textarea name="content" rows="3" cols="60"></textarea></div>
    <div><input type="submit" value="Post Greeting" /></div>
    <input type="hidden" name="guestbookName" value="<%= guestbookName %>"/>
  </form>
  </body>
</html>  
com.google.appengine.tools.admin.JspCompilationException: Failed to compile jsp files.
Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:238)
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:214)
    at org.apache.jasper.JspC.processFile(JspC.java:1181)
    at org.apache.jasper.JspC.execute(JspC.java:1341)
    at com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:40)
Caused by: java.lang.NullPointerException
    at com.google.appengine.tools.development.LocalJspC$LocalCompiler.<clinit>(LocalJspC.java:53)
    ... 7 more
Error while executing: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-labs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/google_sql.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-local-runtime.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api-stubs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-tomcat-juli-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-el-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-launcher-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/appengine-local-runtime-shared.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/servlet-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/el-api.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/classes:/tmp/1366711497850-0:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jdo-api-3.0.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-jdt-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-api-labs.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-standard-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jta-1.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-appengine-2.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-core-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-endpoints.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine-jsr107cache-1.7.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-tomcat-juli-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-jstl-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jdo-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/geronimo-jpa_2.0_spec-1.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jasper-el-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-ant-launcher-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/asm-4.0.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-api-jpa-3.1.3.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/jsr107cache-1.1.jar: -Dcom.google.apphosting.runtime.use_java6=false com.google.appengine.tools.development.LocalJspC -uriroot /tmp/appcfg7995795059214651808.tmp -p org.apache.jsp -l -v -webinc /tmp/appcfg7995795059214651808.tmp/WEB-INF/generated_web.xml -d /tmp/1366711497850-0 -javaEncoding UTF-8 
com.google.appengine.tools.admin.jsp编译异常:未能编译jsp文件。
线程“main”java.lang.ExceptionInInitializeError中出现异常
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:188)
位于org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:238)
位于org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:214)
位于org.apache.jasper.JspC.processFile(JspC.java:1181)
位于org.apache.jasper.JspC.execute(JspC.java:1341)
位于com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:40)
原因:java.lang.NullPointerException
在com.google.appengine.tools.development.LocalJspC$LocalCompiler上(LocalJspC.java:53)
... 还有7个
执行时出错:/usr/lib/jvm/java-7-openjdk-amd64/bin/java-classpath/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.1/lib/impl/appengine-api-labs.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/google/google-sql.jar:/home/abdul/eclipse/eclipse/plugine/plugine/com.appengine-sdk-1.7.7.1/lib/impl/appengine local runtime.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/impl/appengine/appengine/apengine-api.jar/s:/home/pluginsgle.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-ant-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-tomcat-juli-6.0.29.jar:/home/abdul/eclipse/eclipse/eclipse/plugine/com/google/google.7.7.kbundle。7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp/repackaged-appengine-jasper-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.1/appengine-java-sdk-1.7.1/lib/shared/jsp/repackaged-appengine-jasper-el-6.0.29.jar:/home/abdul/eclipse/plugins/com.google.appengine.appengine.7.sdkbundle_1.7.7.1/lib/7.7.1/appengine/shared/jsp/repackaged-appengine-ant-launcher-1.7.1.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/jsp-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.7.1/appengine-sdk-1/lib/shared/appengine-shared/appengine-local-runtime-shared.jar/home/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.1/lib/shared/servlet-api.jar:/home/abdul/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.7.1/appengine-java-sdk-1.7.7.7.1/lib/shared/el-api.jar:/tmp/appcfg79957995505921461808.tmp/WEB-INF/classes:/tmp/1366711497850/tmp/5059808/tmp/79808ib/jdo-api-3.0.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repacked-appengine-jasper-jdt-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/appengine api labs.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repacked-appengine-jakarta-standard-1.1.2.jar:/tmp/appcfg7951798/appengine-14681.html5795059214651808.tmp/WEB-INF/lib/datanucleus-appengine-2.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/datanucleus-core-3.1.3.jar:/tmp/appcfg799579505925214651808.tmp/WEB-INF/lib/appengine-jsr107cache-1.7.1.1.jar:/tmp/WEB-INF/lib/appengine/lib/appengine-endpoints.jar/appengine:/tmp/gpg799595957950595146808-appengine-ant-1.7.1.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-tomcat-juli-6.0.29.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/repackaged-appengine-jakarta-jstl-1.1.2.jar:/tmp/appcfg7995795059214651808.tmp/WEB-INF/lib/lib/nucleus-api-jdo-3.1.3.3.3.3.3.html/repackaged1.0.0.29.jar:/tmp/AppCFGG79797979505050525151808.tmp/WEB-INF/WEB-INF/lib/lib//Ger尼mo-1.0-1.0.JA1/1.0.1.1.jar:/tmp/4/P/P/P/WEB-INF/WEB-INF/WEB-INF/INF/lib/lib/lib/lib/lib/1.1.0.1.0.1.0.1.0.0.0.Ja1/1/Ja1/1/1/1/1/1/1.0.0.0.0.Ja1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/195795059214651808.tmp/WEB-INF/lib/datanucleus-api-jpa-3.1.3.jar:/tmp/appcfg795059214651808.tmp/WEB-INF/lib/jsr107cache-1.1.jar:-Dcom.google.apphosting.runtime.use_java6=false com.google.appengine.tools.development.LocalJspC-uriroot/tmp/appcfg79795059216528808.tmp-apache.jsp-l-v-webinc/tmp/appcfg7995795059214651808.tmp/WEB-INF/generated_WEB.xml-d/tmp/1366711497850-0-javaEncoding UTF-8

错误在哪里?旁注-请避免使用scriptlet。JSTL和EL可以做Scriptlet可以做的任何事情,并且它们更易于维护。你所说的JSTL和EL是什么意思?对不起,我是初学者。