Search code examples
grailsjdbcclassnotfoundexceptionurlloaderggts

java.lang.ClassNotFoundException: com.mysql.jdbc.Driv5r


I am trying to run a grails application and after doing run-app.

| Loading Grails 2.1.1

| Configuring classpath

Resolving [test] dependencies...

Resolving [runtime] dependencies...

| Configuring classpath.

| Environment set to development.....

| Packaging Grails application.....

| Compiling 54 source files

| Compiling 54 source files..

| Compiling 43 source files

warning: Implicitly compiled files were not subject to annotation processing.
Use -proc:none to disable annotation processing or -implicit to specify a policy for implicit compilation.
1 warning
| Compiling 43 source files.....
| Running Grails application



Cannot load JDBC driver class 'com.mysql.jdbc.Driv5r'
java.lang.ClassNotFoundException: com.mysql.jdbc.Driv5r
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
.
.
.
.


  at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:901)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
    at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_closure16.doCall(GantBinding.groovy:185)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

Why does it spells 'com.mysql.jdbc.Driv5r' and not 'com.mysql.jdbc.Driver'

Tried grails clean Refresh Dependencies but still same error is there any external way to add this driver class , i am working on GGTS.


Solution

  • It seems you were being careless.com.mysql.jdbc.Driv5r really.The main and obvious reason for this is the spelling mistake in driverClassName definition in datasource.groovy.

    dataSource {
        pooled = true
        driverClassName = "com.mysql.jdbc.Driv5r"
        dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
        url = dataSourceProperties.getProperty("datasource.url")
        username = dataSourceProperties.getProperty("datasource.username")
        password = dataSourceProperties.getProperty("datasource.password")
    }
    

    correct the driverClassName from com.mysql.jdbc.Driv5r to com.mysql.jdbc.Driver.

    Other than this also make sure whether you have added dependency for mysql in BuildConfig.groovy.