Grails War无法部署到Tomcat - 错误:找不到org.postgresql.Driver

时间:2014-03-21 08:07:47

标签: java grails tomcat7 war postgresql-9.3

我有一个使用PostgreSQL的grails应用程序。一切都很好,当我使用grails控制台时:  grails run-app  grails test-app  grails清洁  格拉斯战争  grails编译

在BuildConfig中,我有:

dependencies {
    runtime 'org.postgresql:postgresql:9.3-1100-jdbc41'
}

但是当我尝试打包.war文件时,将该文件复制到部署了Tomcat应用程序的$ CATALINA_HOME / webapps /,并通过以下方式启动Tomcat服务器:catalina.sh start。我在tracktrace.log中收到了错误消息:

21-Mar-2014 14:45:57.701 SEVERE [localhost-startStop-1] org.apache.tomcat.jdbc.pool.ConnectionPool.init Unable to create initial connections of pool.
java.sql.SQLException: org.postgresql.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:253)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:181)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:633)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:484)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:142)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:126)

我尝试列出/ META-INF / lib中的文件/文件夹,我看到了:

....
postgresql-9.3-1100-jdbc41.jar
....

我不知道这件事有什么关系。有没有人可以帮助我?

2 个答案:

答案 0 :(得分:1)

将JDBC驱动程序JAR移动到Tomcat&#39; s / lib目录。

答案 1 :(得分:0)

不仅库和Jar文件确保数据源设置正确如下:

dependencies {
        runtime "postgresql:postgresql:9.1-901.jdbc4"
    }

dataSource {
    pooled = true
    driverClassName = "org.postgresql.Driver"
    dialect = "org.hibernate.dialect.PostgreSQLDialect"
    username = "iqbal"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
//    cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
}

// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:postgresql://localhost:5432/seram"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:postgresql://localhost:5432/seram"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
            properties {
                maxActive = -1
                minEvictableIdleTimeMillis=1800000
                timeBetweenEvictionRunsMillis=1800000
                numTestsPerEvictionRun=3
                testOnBorrow=true
                testWhileIdle=true
                testOnReturn=false
                validationQuery="SELECT 1"
                jdbcInterceptors="ConnectionState"
            }
        }
    }
}