Hi Laci,

NoClassDefFoundError can mean one of two things:

1) You really didn't include the class in your webapp, so it can't be found.
You should check the classes in WEB-INF/classes and the jars in WEB-INF/lib
to make sure com.reference.server.PMF is present.

2) Your PMF class threw an exception in its static initializer the very
first time the JVM tried to class load it. If this is the case, there should
be an ExceptionInInitializerError somewhere in your logs. In this specific
case, something could have failed in your initialization of pmfInstance.

On Tue, Mar 8, 2011 at 7:58 PM, Laci <laszlo.bor...@gmail.com> wrote:

> Hi!
>
> I am trying to use the persistancemanagerfactory, and always get the
> following error.
> I have searched over the internet for solutions, nothing helped so far. Any
> help is welcome. I am getting lost.
>
> When I try to use the instance, I get the error.
> PersistenceManager pm = PMF.get().getPersistenceManager();
> try {
> pm.currentTransaction().begin();
> pm.makePersistent(c);
> pm.currentTransaction().commit();
> } catch (Exception ex) {
> pm.currentTransaction().rollback();
> throw new RuntimeException(ex);
> } finally {
> pm.close();
> }
>
> PMF implementation:
>
> import javax.jdo.JDOHelper;
> import javax.jdo.PersistenceManagerFactory;
>
> public final class PMF {
>     private static PersistenceManagerFactory pmfInstance =
>         JDOHelper.getPersistenceManagerFactory("transactions-optional");
>
>     private PMF() {}
>
>     public static synchronized PersistenceManagerFactory get() {
>         if(pmfInstance == null)  {
>             pmfInstance = JDOHelper.getPersistenceManagerFactory(
>                   "transactions-optional");
>         }
>         return pmfInstance;
>     }
> }
>
> jdconfig.xml:
>
> <?xml version="1.0" encoding="utf-8"?>
> <jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig";
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig
> ">
>
>    <persistence-manager-factory name="transactions-optional">
>        <property name="javax.jdo.PersistenceManagerFactoryClass"
>
> value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
>        <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
>        <property name="javax.jdo.option.NontransactionalRead"
> value="true"/>
>        <property name="javax.jdo.option.NontransactionalWrite"
> value="true"/>
>        <property name="javax.jdo.option.RetainValues" value="true"/>
>        <property name="datanucleus.appengine.autoCreateDatastoreTxns"
> value="true"/>
>    </persistence-manager-factory>
> </jdoconfig>
>
> Error:
>
> [ERROR] javax.servlet.ServletContext log: Exception while dispatching
> incoming RPC call
> com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public
> abstract void
> com.reference.client.GreetingService.addCompany(com.reference.shared.Company)'
> threw an unexpected exception: java.lang.NoClassDefFoundError: Could not
> initialize class com.reference.server.PMF
> at
> com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
> at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
> at
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
> 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.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
> 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:122)
> 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.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
> 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:212)
> 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)
> Caused by: java.lang.NoClassDefFoundError: Could not initialize class
> com.reference.server.PMF
> at
> com.reference.server.ContactImplPersistent.addCompany(ContactImplPersistent.java:59)
> at
> com.reference.server.GreetingServiceImpl.addCompany(GreetingServiceImpl.java:24)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
> at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
> ... 30 more
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to