0

I am converting a Struts/Hibernate application over to Google App Engine. When I try to start the front page of my application I get the following error message. Can anyone help me with this?

java.lang.IllegalAccessError
    at net.sf.cglib.core.ClassEmitter.setTarget(ClassEmitter.java:47)
    at net.sf.cglib.core.ClassEmitter.<init>(ClassEmitter.java:39)
    at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:165)
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:215)
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
    at org.hibernate.impl.SessionFactoryImpl.<clinit>(SessionFactoryImpl.java:321)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1005)
    at com.configuration.ConfigurationListener.contextInitialized(ConfigurationListener.java:19)
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:196)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:239)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:146)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:189)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:128)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:104)

There is a reference in the above error message to a class called ConfigurationListener. This is a class I have provided that gets a database session for the application. Here is the method in which the error occurs, and I've marked which line is line 19.

public void contextInitialized(ServletContextEvent contextEvent) {
            /* The following line is line 19. */
    this.sessionFactory = this.configuration.configure().buildSessionFactory();
    this.context = contextEvent.getServletContext();
    this.context.setAttribute("sessionFactory", sessionFactory);
}

1 Answers1

0

Note that Hibernate is not directly supported under GAE:

http://code.google.com/p/googleappengine/wiki/WillItPlayInJava

In addition, if this is related to your previous question, it's important to point out that simply replacing a bytecode manipulation library with a substantially older one, while it may work under some circumstances, is almost certainly a Bad Idea. Arbitrary mixing and matching of library dependencies, particularly ones operating at such a fundamental level, isn't a good approach, IMO.

Community
  • 1
  • 1
Dave Newton
  • 158,873
  • 26
  • 254
  • 302
  • Thanks for the help. I now know I need to do some refactoring of my code, but that's doable. Thanks again. –  Jun 18 '12 at 16:56