类路径中jar的不同版本

时间:2012-01-26 09:58:01

标签: grails classpath

您好,这是following question的后续问题。

我正在创建一个Grails插件作为复杂产品的包装器。该产品与hibernate等其他产品有很多依赖关系。问题是,grails具有一些相同的依赖关系,但具有不同的版本。例如。 Grails - > hibernate 3.6.7其他产品 - > hibernate 3.5.6

我修改了BuildConfig.groovy,如解决方案中所述:

dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
    runtime ('org.ow2.bonita:bonita-server:5.6.1') {
        excludes "slf4j-jdk14"
    }
}

Grails已恢复所有依赖项并将所有必需的jar下载到本地存储库。 STS可以解析依赖项中的所有类。在run-app上有一个hibernate的问题:

Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.util.SoftLimitMRUCache.<init>(I)V

我认为由于类路径中有多个休眠jar,错误会出现。怎么解决呢?

先谢谢!

1 个答案:

答案 0 :(得分:1)

您检查过精细手册吗?

http://grails.org/doc/1.3.x/guide/3.%20Configuration.html#3.7.7%20Plugin%20JAR%20Dependencies

您的项目似乎需要旧版本的hibernate。所以我猜解决方案可能是

  • 创建一个插件项目
  • 删除hibernate插件
  • 将您的jar文件放入项目
  • 按照文档中的说明配置hibernate jar export=false(参见上面的链接)