【问题标题】:Hibernate Jar conflicts with grails 2.0.3Hibernate Jar 与 grails 2.0.3 冲突
【发布时间】:2012-05-30 17:19:07
【问题描述】:

我有一个 grails(2.0.3) 应用程序,它依赖于另一个使用休眠 jar 的项目,即:

org.hibernate:hibernate-core:4.1.0.Final

org.hibernate:hibernate-entitymanager:4.1.0.Final

当我运行使用这些 jar 的那部分代码时,它会遇到异常:-

java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence
    at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

这就像 grails 正在使用的休眠版本的 jar 冲突问题(我不确定)。我该如何解决这个问题。

(切换依赖项目的休眠版本会很困难。所以我可以在不选择该选项的情况下解决这个问题。)

【问题讨论】:

  • 您是否尝试排除此子依赖项?
  • 如果我提到 BuildConfig.groovy 中的依赖项,它会在应用程序启动时给我一个异常: context.GrailsContextLoader Error execution bootstraps: java.lang.NoClassDefFoundError: org.codehaus.groovy.grails.orm。 hibernate.support.ClosureEventTriggeringInterceptor org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:736 ) 在 grails.spring.BeanBuilder.beans(BeanBuilder.java:569)
  • 如果我在 BuildConfig 中避免像这样的 jar 的传递依赖,效果与我的第一种情况相同:- runtime "org.hibernate:hibernate-entitymanager:4.1.0.Final" { 传递 = 假 }
  • 那么,当您需要两个(和冲突的)hibernate 版本时,您会遇到这样的情况吗?我不确定是否存在快速修复方法。也许您可以尝试制作自己的类加载器,但我无能为力,抱歉
  • 是的,这就是我遇到的情况。 :-(

标签: hibernate grails


【解决方案1】:

最终通过将 3.6 版的休眠 jar 用于依赖应用程序来解决此问题。 Grails 似乎正在使用这个版本。这消除了冲突问题。 :-)

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2015-01-15
    • 2011-11-23
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多