Grails抛出H2 WebServlet加载错误

时间:2014-12-06 11:29:26

标签: grails configuration h2

我正在尝试从Grails应用中删除H2。在我的BuildConfig.groovy

grails.project.dependency.resolution = {
    inherits("global") {
        excludes 'h2'
    }

    ...
}

在我的Datasource.groovy文件中:

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory'
    singleSession = true
}

当我执行run-app我的应用程序在浏览器中正常运行时,但在控制台中我看到以下错误输出:

|Loading Grails 2.4.2
|Configuring classpath
.
|Environment set to development
.................................
|Packaging Grails application
....................................
|Running Grails application
Error |
2014-12-06 06:13:58,476 [localhost-startStop-1] ERROR [localhost].[/]  - Servlet  threw load() exception
Message: org.h2.server.web.WebServlet
    Line | Method
->>   59 | findClass in org.grails.plugins.tomcat.ParentDelegatingClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    425 | loadClass in java.lang.ClassLoader
|    358 | loadClass in     ''
|    262 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run . . . in java.lang.Thread
|Server running. Browse to http://localhost:8080/

H2附带自己的网络servlet?!? 这里发生了什么,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:2)

是的,H2有一个很棒的基于Web的JDBC控制台,可以与任何JDBC驱动程序一起使用,并且在开发环境中默认配置它。但是,它可以针对任何环境启用或禁用。它在文档here中有所描述。如果您不打算使用它并且排除了jar,则可以通过添加

来禁用所有环境
grails.dbconsole.enabled = false

Config.groovy - 只需确保它是顶级属性,而不是environments块。

这是一个非常方便的功能,特别是因为它允许您访问首次创建项目时默认使用的内存数据库。但是,即使您转移到“真正的”数据库,它仍然是访问您的数据库的一个很好的实用程序。除非jar引起冲突,否则我将删除排除,因为jar只有~1.6MB。