Java Play Framework 1.2.5 Hibernate升级到V4.2.4

Java Play Framework 1.2.5 Hibernate升级到V4.2.4,java,hibernate,playframework,playframework-1.x,Java,Hibernate,Playframework,Playframework 1.x,我正在尝试将与PlayFramework1.2.5打包的HibernateV3.6升级到Hibernate4.2.4 我编辑了dependencies.yml以从maven jboss repo获取。我还运行了playdeps-sync,看到jar被添加到lib/ 现在,当我运行应用程序时,我得到以下…堆栈跟踪 java.lang.IllegalAccessError: tried to access method org.hibernate.cfg.Configuration.<init

我正在尝试将与PlayFramework1.2.5打包的HibernateV3.6升级到Hibernate4.2.4

我编辑了dependencies.yml以从maven jboss repo获取。我还运行了playdeps-sync,看到jar被添加到lib/

现在,当我运行应用程序时,我得到以下…堆栈跟踪

java.lang.IllegalAccessError: tried to access method org.hibernate.cfg.Configuration.<init>(Lorg/hibernate/cfg/SettingsFactory;)V from class org.hibernate.ejb.Ejb3Configuration

org.hibernate.ejb.Ejb3Configuration [Ejb3Configuration.java : 161]
play.db.jpa.JPAPlugin [JPAPlugin.java : 118]
play.plugins.PluginCollection [PluginCollection.java : 525]
play.Play [Play.java : 526]
play.Play [Play.java : 630]
play.Invoker$Invocation [Invoker.java : 198]
play.server.PlayHandler$NettyInvocation [PlayHandler.java : 189]
play.Invoker$Invocation [Invoker.java : 276]
play.server.PlayHandler$NettyInvocation [PlayHandler.java : 229]
java.util.concurrent.Executors$RunnableAdapter [Executors.java : 471]
java.util.concurrent.FutureTask$Sync [FutureTask.java : 334]
java.util.concurrent.FutureTask [FutureTask.java : 166]
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask [ScheduledThreadPoolExecutor.java : 178]
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask [ScheduledThreadPoolExecutor.java : 292]
java.util.concurrent.ThreadPoolExecutor [ThreadPoolExecutor.java : 1145]
java.util.concurrent.ThreadPoolExecutor$Worker [ThreadPoolExecutor.java : 615]
java.lang.Thread [Thread.java : 722]

我猜错误是因为类路径中引用了多个hibernate JAR。这是真的,所以我手动编辑了类路径以删除旧的hibernate JAR。但是这也没什么帮助。

我想hibernate 3.x和4.x并不完全兼容,所以您必须修改框架本身的一些源代码才能使用这个版本的hibernate

您可以从hibernate 4.1.3附带的1.3.x github分支开始: