使用grails run-app获取'java.sql.SQLException:com.mysql.jdbc.Driver'(当BuildConfig.groovy不需要重新编译时)

dos*_*aki 1 mysql grails jetty

我已将我的grails应用程序从1.3.9升级到2.2.3然后升级到2.3.3.我阅读了1.3.9-> 2.2.3的发布和升级说明,然后是2.2.3-> 2.3.3

我正在使用OpenJDK 6,Jetty 6插件jetty 1.1,MySQL 5.5我有连接器库lib

现在我的问题是如果我运行grails clean然后grails run-app应用程序运行没有任何问题,但如果我停止它并grails run-app再次运行我得到一个巨大的错误(见这里:http://pastebin.com/36MpXhir)

我还发现,更改某些内容BuildConfig.groovy(任何使其重新编译的内容)都会使应用程序正常运行.

看看堆栈跟踪,让我困惑的第一件事就是

    [02.12.13 16:13:59.919] [main] pool.ConnectionPool Unable to create initial connections of pool.
    java.sql.SQLException: com.mysql.jdbc.Driver
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127)
        at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy.afterPropertiesSet(LazyConnectionDataSourceProxy.java:162)
Run Code Online (Sandbox Code Playgroud)

org.apache.tomcat即使我使用jetty(并从中删除了tomcat BuildConfig.groovy)也有引用.

有没有人遇到过这样的问题?

Bur*_*ith 9

如果jar文件在公共Maven仓库中可用,请不要将它们放在lib目录中.下载jar一次并将它们保存在本地缓存中会更好,并根据需要重用它们.

MySQL驱动程序用作生成中已注释掉的示例BuildConfig.groovy- 只需取消注释:)您可能希望将版本提升到最新版本,例如

dependencies {
   runtime 'mysql:mysql-connector-java:5.1.27'
}
Run Code Online (Sandbox Code Playgroud)

这是查找Maven工件的好站点:http://mvnrepository.com/artifact/mysql/mysql-connector-java

如果你有一个不在Maven仓库中的jar(例如你公司有共享代码的jar)那么你可以将它放在lib目录中,但它不是自动发现的.运行grails compile --refresh-dependencies以将其添加到类路径中.