无法初始化类 com.sample.PMF(Google 应用引擎)
我在尝试将某些内容保存到数据存储时收到此错误。 我尝试过搜索但没有得到任何结果。 这是我保存到数据存储的代码:
Student temp = null;
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Student stu = new Student(name);
temp = pm.makePersistent(stu);
} finally {
pm.close();
}
return temp;
任何有关此的信息都将受到赞赏!
编辑:添加堆栈跟踪:
在 com.sample.dbops.DBManager.saveStudent(DBManager.java:18) 在 org.apache.jsp.index_jsp._jspService(index_jsp.java:64) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) 在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 在 com.google.appengine.tools.development.PrivilegedJspServlet.access 101 美元(PrivilegedJspServlet.java:23) 在 com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59) 在 java.security.AccessController.doPrivileged(本机方法) 在 com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 在 com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268) 在 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 在 com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80) 在 com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:251) 在 com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:117) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:693) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) 在 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 在 com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:124) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 在 com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 在 com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:313) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 在 org.mortbay.jetty.Server.handle(Server.java:313) 在 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506) 在 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830) 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) 在 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 在 org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
I am getting this error while trying to save something to Datastore.
I have tried to search but not getting anything.
This is the code where i am saving to datastore :
Student temp = null;
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Student stu = new Student(name);
temp = pm.makePersistent(stu);
} finally {
pm.close();
}
return temp;
Any kind of information on this is appreciated!
EDIT: adding stack trace :
at com.sample.dbops.DBManager.saveStudent(DBManager.java:18)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:64)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)
at com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:251)
at com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:117)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:124)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:313)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
堆栈跟踪没有多大帮助,但未初始化 PersistenceManagerFactory 的原因之一是它找不到您在 JDOHelper.getPersistenceManagerFactory(String) 方法中指定的持久性单元。
例如,如果您的 PMF 的
get()
方法如下所示:那么您的类路径(例如 WEB-INF/classes)中必须有一个 jdoconfig.xml,它定义了一个持久性单元,如下所示:(具有相同的名称您在 getPersistenceManagerFactory 中使用的)。在这种情况下“交易可选”
The stack trace did not help much, but one reason for not initializing the PersistenceManagerFactory is that it could not find a persistence unit that you specified in the
JDOHelper.getPersistenceManagerFactory(String)
method.e.g. If your PMF's
get()
method looks like this:Then you must have a jdoconfig.xml in your classpath (e.g. WEB-INF/classes) that defines a persistence unit as follows: (with same name that you used in getPersistenceManagerFactory). In this case "transactions-optional"
已解决:我从静态方法调用上面的代码,现在我将其设为实例方法并且它有效。
但还是很困惑?
Solved : I was calling the above code from a static method, now i made it an instance method and it worked.
but still confused?