Java 无类';com.appspot<;项目名称>;。model.News';登记

Java 无类';com.appspot<;项目名称>;。model.News';登记,java,eclipse,google-app-engine,objectify,Java,Eclipse,Google App Engine,Objectify,我在创作新闻文章时遇到问题: CreateNewsServlet.java 我使用Objectify和GAE。 我有一个RegisterServlet.java可以工作!但是,当我尝试添加新闻文章时,会得到以下堆栈: mei 08, 2014 10:29:45 AM com.google.apphosting.utils.jetty.JettyLogger warn WARNING: /CreateNewsServlet.do java.lang.IllegalArgumentException

我在创作新闻文章时遇到问题: CreateNewsServlet.java 我使用Objectify和GAE。 我有一个RegisterServlet.java可以工作!但是,当我尝试添加新闻文章时,会得到以下堆栈:

mei 08, 2014 10:29:45 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /CreateNewsServlet.do
java.lang.IllegalArgumentException: No class 'com.appspot.darkening.model.News' was registered
at com.googlecode.objectify.ObjectifyFactory.getMetadata(ObjectifyFactory.java:247)
at com.googlecode.objectify.ObjectifyFactory.getMetadataForEntity(ObjectifyFactory.java:273)
at com.googlecode.objectify.impl.AsyncObjectifyImpl.put(AsyncObjectifyImpl.java:261)
at com.googlecode.objectify.impl.AsyncObjectifyImpl.put(AsyncObjectifyImpl.java:239)
at com.googlecode.objectify.impl.ObjectifyImpl.put(ObjectifyImpl.java:135)
at com.appspot.darkening.model.service.NewsOfyDAOImpl.createNews(NewsOfyDAOImpl.java:29)
at com.appspot.darkening.server.CreateNewsServlet.doPost(CreateNewsServlet.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:368)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:351)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:97)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:485)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
我的RegisterServlet和DAO类

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.appspot.darkening.model.User;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;

public class UserOfyDAOImpl implements UserOfyDAO {
   private Objectify ofy;

public UserOfyDAOImpl(){
      ofy = ObjectifyService.begin();

}
public void deleteUser(User u) {
      //TODO delete user ofy
       ofy.delete((u));
   }


   public void createUser(String us, String pw, String nm, int sec){
       ofy.put(new User(us, pw, nm, sec));


   }
package com.appspot.darkening.model.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.appspot.darkening.model.News;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;

public class NewsOfyDAOImpl implements NewsOfyDAO {
   private Objectify ofy;

public NewsOfyDAOImpl(){
      ofy = ObjectifyService.begin();

}
public void deleteNews(News u) {
      //TODO delete News ofy
       ofy.delete((u));
   }

   public void createNews(String us, String pw,  int sec, String au, String da){
       ofy.put(new News(us, pw, sec, au, da));
   }

package com.appspot.darkening.server;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Logger;

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

import com.appspot.darkening.model.News;
import com.appspot.darkening.model.User;
import com.appspot.darkening.model.service.NewsOfyDAOImpl;
import com.appspot.darkening.model.service.UserOfyDAOImpl;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;


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

public void doGet(HttpServletRequest request,  HttpServletResponse response) throws IOException,                                                  ServletException {  
doPost(request, response);  } 

protected void doPost( HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException{

     boolean succes = false;
     String title = req.getParameter("title");
     String description = req.getParameter("descr");
     String securityLevel = req.getParameter("seclvl");
     int seclvl = 1;
     seclvl = Integer.parseInt(securityLevel);
     String author = req.getParameter("author");
    // Create an instance of SimpleDateFormat used for formatting 
    // the string representation of date (month/day/year)
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

    // Get the date today using Calendar object.
    Date today = Calendar.getInstance().getTime();        
    // Using DateFormat format method we can create a string 
    // representation of a date with the defined format.
     String date = df.format(today);

     System.out.println(title);
     System.out.println(description);
     System.out.println(seclvl);
     System.out.println(author);
     System.out.println(today); 
     System.out.println(date);  
     ArrayList<User> allUsers = new ArrayList<User>();
        allUsers = (ArrayList<User>) getServletContext().getAttribute("users");
        UserOfyDAOImpl n = new UserOfyDAOImpl();

    if(title != null && description != null && seclvl != 0 && author != null && date !=null){

        News u = new News(title,description, seclvl, author, date);
        NewsOfyDAOImpl uop = new NewsOfyDAOImpl();

                uop.createNews(title, description, seclvl, author, date);
                req.setAttribute("msgs", "Er is een leerling aangemaakt");
                succes = true;
                log.info("gebruiker:"+ uop+" is aangemaakt.");

    }

    RequestDispatcher rd = null;
    if(succes){
        req.setAttribute("msgs", "Succes");
        rd = req.getRequestDispatcher("index-goede.jsp");
    }
    else{
        rd = req.getRequestDispatcher("CreateNews.jsp");
    }
    rd.forward(req, resp);

}
}
//

import java.io.IOException;
导入java.util.ArrayList;
导入java.util.logging.Logger;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入com.appspot.darking.model.User;
导入com.appspot.darking.model.service.UserOfyDAOImpl;
导入com.googlecode.objectify.objectify;
导入com.googlecode.objectify.ObjectifyService;
公共类RegisterServlet扩展了HttpServlet{
私有静态最终记录器log=Logger.getLogger(UserContextListener.class.getName());
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
布尔成功=假;
字符串名称=req.getParameter(“名称”);
字符串username=req.getParameter(“用户名”);
字符串pass=req.getParameter(“password1”);
int seclvl=Integer.parseInt(req.getParameter(“seclvl”);
ArrayList allUsers=新的ArrayList();
allUsers=(ArrayList)getServletContext().getAttribute(“用户”);
系统输出打印LN(allUsers);
if(name!=null&&username!=null&&pass!=null){
用户u=新用户(名称、用户名、密码、密码);
UserOfyDAOImpl uop=新UserOfyDAOImpl();
对于(用户ul:uop.getAllUsers()){
如果(ul.getUsername().equals(用户名)和&ul.getPassword().equals(通过)){
日志信息(“gebruiker bestaat al”);
}
否则{
uop.createUser(名称、用户名、密码、密码);
请求setAttribute(“msgs”,“Er是een-leerling-Aangemakt”);
成功=正确;
log.info(“gebruiker:+uop+”是一个空的单位。”);
}
}
RequestDispatcher rd=null;
如果(成功){
请求设置属性(“msgs”、“成功”);
rd=req.getRequestDispatcher(“login.jsp”);
}
否则{
rd=req.getRequestDispatcher(“register.jsp”);
}
转发(请求、响应);
}
}
}

我的CreateNewsServlet和DAO类

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.appspot.darkening.model.User;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;

public class UserOfyDAOImpl implements UserOfyDAO {
   private Objectify ofy;

public UserOfyDAOImpl(){
      ofy = ObjectifyService.begin();

}
public void deleteUser(User u) {
      //TODO delete user ofy
       ofy.delete((u));
   }


   public void createUser(String us, String pw, String nm, int sec){
       ofy.put(new User(us, pw, nm, sec));


   }
package com.appspot.darkening.model.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.appspot.darkening.model.News;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;

public class NewsOfyDAOImpl implements NewsOfyDAO {
   private Objectify ofy;

public NewsOfyDAOImpl(){
      ofy = ObjectifyService.begin();

}
public void deleteNews(News u) {
      //TODO delete News ofy
       ofy.delete((u));
   }

   public void createNews(String us, String pw,  int sec, String au, String da){
       ofy.put(new News(us, pw, sec, au, da));
   }

package com.appspot.darkening.server;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Logger;

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

import com.appspot.darkening.model.News;
import com.appspot.darkening.model.User;
import com.appspot.darkening.model.service.NewsOfyDAOImpl;
import com.appspot.darkening.model.service.UserOfyDAOImpl;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;


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

public void doGet(HttpServletRequest request,  HttpServletResponse response) throws IOException,                                                  ServletException {  
doPost(request, response);  } 

protected void doPost( HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException{

     boolean succes = false;
     String title = req.getParameter("title");
     String description = req.getParameter("descr");
     String securityLevel = req.getParameter("seclvl");
     int seclvl = 1;
     seclvl = Integer.parseInt(securityLevel);
     String author = req.getParameter("author");
    // Create an instance of SimpleDateFormat used for formatting 
    // the string representation of date (month/day/year)
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

    // Get the date today using Calendar object.
    Date today = Calendar.getInstance().getTime();        
    // Using DateFormat format method we can create a string 
    // representation of a date with the defined format.
     String date = df.format(today);

     System.out.println(title);
     System.out.println(description);
     System.out.println(seclvl);
     System.out.println(author);
     System.out.println(today); 
     System.out.println(date);  
     ArrayList<User> allUsers = new ArrayList<User>();
        allUsers = (ArrayList<User>) getServletContext().getAttribute("users");
        UserOfyDAOImpl n = new UserOfyDAOImpl();

    if(title != null && description != null && seclvl != 0 && author != null && date !=null){

        News u = new News(title,description, seclvl, author, date);
        NewsOfyDAOImpl uop = new NewsOfyDAOImpl();

                uop.createNews(title, description, seclvl, author, date);
                req.setAttribute("msgs", "Er is een leerling aangemaakt");
                succes = true;
                log.info("gebruiker:"+ uop+" is aangemaakt.");

    }

    RequestDispatcher rd = null;
    if(succes){
        req.setAttribute("msgs", "Succes");
        rd = req.getRequestDispatcher("index-goede.jsp");
    }
    else{
        rd = req.getRequestDispatcher("CreateNews.jsp");
    }
    rd.forward(req, resp);

}
}
package com.appspot.darking.model.service;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入com.appspot.darking.model.News;
导入com.googlecode.objectify.Key;
导入com.googlecode.objectify.objectify;
导入com.googlecode.objectify.ObjectifyService;
公共类NewsOfyDAOImpl实现NewsOfyDAO{
私人客体化;
公开新闻Ofydaoimpl(){
ofy=ObjectifyService.begin();
}
公共新闻(新闻u){
//TODO删除Y的新闻
删除((u));
}
public void createNews(字符串us、字符串pw、整数秒、字符串au、字符串da){
ofy.put(新新闻(美国、太平洋、美国证券交易委员会、澳大利亚、加拿大));
}
包com.appspot.darking.server;
导入java.io.IOException;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Calendar;
导入java.util.Date;
导入java.util.logging.Logger;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入com.appspot.darking.model.News;
导入com.appspot.darking.model.User;
导入com.appspot.darking.model.service.NewsOfyDAOImpl;
导入com.appspot.darking.model.service.UserOfyDAOImpl;
导入com.googlecode.objectify.objectify;
导入com.googlecode.objectify.ObjectifyService;
公共类CreateNewsServlet扩展了HttpServlet{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
私有静态最终记录器log=Logger.getLogger(UserContextListener.class.getName());
public void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出IOException,ServletException{
doPost(请求、响应);}
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
布尔成功=假;
字符串title=req.getParameter(“title”);
字符串描述=req.getParameter(“descr”);
字符串securityLevel=req.getParameter(“seclvl”);
int seclvl=1;
seclvl=Integer.parseInt(securityLevel);
字符串author=req.getParameter(“author”);
//创建用于格式化的SimpleDataFormat实例
//日期的字符串表示形式(月/日/年)
DateFormat df=新的简化格式(“MM/dd/yyyy HH:MM:ss”);
//使用日历对象获取今天的日期。
Date today=Calendar.getInstance().getTime();
//使用DateFormat方法,我们可以创建一个字符串
//用定义的格式表示日期。
字符串日期=df.format(今天);
系统输出打印项次(标题);
系统输出打印项次(说明);
系统输出打印项次(seclvl);
System.out.println(作者);
System.out.println(今天);
系统输出打印项次(日期);
ArrayList allUsers=新的ArrayList();
allUsers=(ArrayList)getServletContext().getAttribute(“用户”);
UserOfyDAOImpl n=新UserOfyDAOImpl();
if(title!=null&&description!=null&&seclvl!=0&&author!=null&&date!=null){
新闻u=新新闻(标题、描述、秘书、作者、日期);
NewsOfyDAOImpl uop=新的NewsOfyDAOImpl();
uop.createNews(标题、描述、秘书、作者、日期);
请求setAttribute(“msgs”,“Er是een-leerling-Aangemakt”);
成功=正确;
log.info(“gebruiker:+uop+”是一个空的单位。”);
}
RequestDispatcher rd=null;
如果(成功){
请求