【问题标题】:Getting unknown error while running an Grails 2.1.1 application using grials run-app使用 grials run-app 运行 Grails 2.1.1 应用程序时出现未知错误
【发布时间】:2013-09-03 02:35:00
【问题描述】:

在使用 grails run-app 命令运行 Grails 2.1.1 应用程序时,我收到 Hibernate 错误,无法创建所需的 bean。

错误的堆栈跟踪如下:

加载 Grails 2.1.1 |配置类路径。 |环境设置为 发展..... |打包 Grails 应用程序.... |编译 1 源文件 |编译1个源文件..... |运行圣杯 应用程序配置 Spring Security UI ... ...完成 配置 Spring Security UI 配置 Spring Security Core ... ... 完成配置 Spring Security Core 配置 Spring 安全ACL ... ... 完成配置Spring Security ACL 配置 Spring Security Twitter ... ... 配置完成 Spring Security 推特

|错误 2013-08-30 16:24:31,120 [localhost-startStop-1] 错误 context.GrailsContextLoader - 执行引导程序时出错:错误 创建名为“transactionManagerPostProcessor”的bean: bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“transactionManager”的bean:无法解析引用 在设置 bean 属性 'sessionFactory' 时 bean 'sessionFactory'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“sessionFactory”的bean:无法解析对 bean 'hibernateProperties' 同时设置 bean 属性 '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言!

消息:使用名称创建 bean 时出错 'transactionManagerPostProcessor': bean 初始化失败; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“transactionManager”的bean:无法解析引用 在设置 bean 属性 'sessionFactory' 时 bean 'sessionFactory'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“sessionFactory”的bean:无法解析对 bean 'hibernateProperties' 同时设置 bean 属性 '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言! 线 |方法 ->> 334 | java.util.concurrent.FutureTask$Sync 中的 innerRun - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 166 |在 java.util.concurrent.FutureTask 中运行 |第1145章java.util.concurrent.ThreadPoolExecutor 中的 runWorker | 615 |在 java.util.concurrent.ThreadPoolExecutor$Worker 中运行 ^ 724 |跑步 。 . .在由 BeanCreationException 引起的 java.lang.Thread 中:使用名称创建 bean 时出错 “transactionManager”:无法解析对 bean 的引用 'sessionFactory' 同时设置 bean 属性 'sessionFactory';嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 创建名为“sessionFactory”的 bean 时出错:无法解析 在设置 bean 属性时引用 bean 'hibernateProperties' '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言!

->>  334 | innerRun  in java.util.concurrent.FutureTask$Sync
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  |    166 | run       in java.util.concurrent.FutureTask
  |   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
  |    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
  ^    724 | run . . . in java.lang.Thread

由 BeanCreationException 引起:使用名称创建 bean 时出错 “sessionFactory”:无法解析对 bean 的引用 设置 bean 属性时的“hibernateProperties” '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言!

我的 DataBaseConfig.groovy 的设置如下:

  dataSource {
  pooled = true
  driverClassName = "org.h2.Driver"
  username = "sa"
  password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}

    // environment specific settings
  environments {

development {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}
test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}
production {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}

非常感谢您尽早回复。

谢谢

【问题讨论】:

  • 你见过this。好像和你的jdk版本有关

标签: hibernate grails javabeans grails-2.1


【解决方案1】:

遇到过同样的问题。

问题似乎与您正在运行的 grails 版本有关。 对于 jdk 1.7.025> 在 grails 上低于 2.2.3 的版本,这似乎出现了。

我们降级到低版本的jdk,问题没有出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多