2012-06-17 9 views
0

Я конвертирую приложение Struts/Hibernate в Google App Engine. Когда я пытаюсь запустить первую страницу своего приложения, я получаю следующее сообщение об ошибке. Кто-нибудь может мне с этим помочь?Google App Engine - java.lang.IllegalAccessError

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) 

В приведенном выше сообщении об ошибке есть ссылка в классе ConfigurationListener. Это класс, который я предоставил, который получает сеанс базы данных для приложения. Вот метод, в котором произошла ошибка, и я пометил какая линия линия 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); 
} 
+0

Какую версию cglib и asm вы развертываете? –

ответ

0

Обратите внимание, что Hibernate не поддерживается непосредственно под GAE:

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

Кроме того, если это связано с вашим previous question, важно отметить, что просто заменяя библиотеку манипуляции байткодом по существу более старую, в то время как она может работает под приблизительно обстоятельства, почти certai а Плохая идея. Произвольное смешивание и сопоставление библиотечных зависимостей, особенно тех, которые работают на таком фундаментальном уровне, не является хорошим подходом, ИМО.

+0

Спасибо за помощь. Теперь я знаю, что мне нужно сделать рефакторинг моего кода, но это выполнимо. Еще раз спасибо. –