使用grials run-app运行Grails 2.1.1应用程序时出现未知错误

时间:2013-08-30 11:18:25

标签: hibernate grails javabeans grails-2.1

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

错误的堆栈跟踪如下:

  

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

     

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

     

消息:使用名称创建bean时出错   ' transactionManagerPostProcessor':bean的初始化失败;   嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   使用名称' transactionManager'创建bean:无法解析引用   to bean' sessionFactory'设置bean属性' sessionFactory&#39 ;;   嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   创建名为' sessionFactory'的bean:无法解析引用   bean' hibernateProperties'设置bean属性时   ' hibernateProperties&#39 ;;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   用名称' hibernateProperties'创建bean:无法解决   引用bean' dialectDetector'设置bean属性时   '属性'用键[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 |跑 。 。 。 in java.lang.Thread由BeanCreationException引起:使用name创建bean时出错   ' transactionManager':无法解析对bean的引用   '的sessionFactory'设置bean属性' sessionFactory&#39 ;;嵌套   异常是org.springframework.beans.factory.BeanCreationException:   创建名称为' sessionFactory'的bean时出错:无法解析   引用bean' hibernateProperties'设置bean属性时   ' hibernateProperties&#39 ;;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   用名称' hibernateProperties'创建bean:无法解决   引用bean' dialectDetector'设置bean属性时   '属性'用键[hibernate.dialect];嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   创建名为' dialectDetector':调用init方法的bean   失败;嵌套异常是   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引起:使用name创建bean时出错   ' sessionFactory':无法解析对bean的引用   ' hibernateProperties'设置bean属性时   ' hibernateProperties&#39 ;;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   用名称' hibernateProperties'创建bean:无法解决   引用bean' dialectDetector'设置bean属性时   '属性'用键[hibernate.dialect];嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   创建名为' dialectDetector':调用init方法的bean   失败;嵌套异常是   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"
    }
}

我们非常感谢早期的回应。

由于

1 个答案:

答案 0 :(得分:0)

遇到过同样的问题。

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

我们降级为较低版本的jdk,并且没有出现问题。