JDK 7 + STS + MySQL. Class do Driver não encontrada.
27/06/2012 14:36
0
Prezados, hoje fiz um teste com GRails criando um domínio só para poder gerar um banco MySQL pra mim.

O meu cenário atual é o seguinte:

- GRails 2.0.3;
- JDK 7u05;
- lib do connector já inserida na pasta lib;

Quando executo grails run-app me é retornado:


Caused by ClassNotFoundException: com.mysql.jdbc.Driver
->> 366 | run in java.net.URLClassLoader$1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 355 | run in ''
| 354 | findClass in java.net.URLClassLoader
| 423 | loadClass in java.lang.ClassLoader
| 356 | loadClass in ''
| 1420 | createConnectionFactory in org.apache.commons.dbcp.BasicDataSource
| 1371 | createDataSource in ''
| 1044 | getConnection in ''
| 334 | innerRun in java.util.concurrent.FutureTask$Sync
| 166 | run in java.util.concurrent.FutureTask
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 603 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . in java.lang.Thread


Olhei o BuildCOnfig e lá tenho o seguinte:

grails.project.target.level = 1.6
grails.project.source.level = 1.6

Seria isso ??? Não posso compilar a App com a JDK 7 ???

Onde posso estar errando ??

Abs []
Tags: MySQL, JDK 7


0
Pessoal, com a ajuda deste Post
http://www.grailsbrasil.com.br/post/show/1734

eu consegui resolver o problema adicionando a dependência no BuildConfig.groovy...

Só que agora eu fiquei encucado... Tenho um outro projeto que já funcionava sem essa configuração no GRails 2.0.0.

Isso mudou ??? Precisamos agora adicionar sempre essa closure no BuildConfig ???


dependencies {
runtime 'mysql:mysql-connector-java:5.1.20-bin'
}


Pergunto isso porque fica chato todas as vezes que precisar subir a App ter que fazer o Download novamente das dependências externas... E quando essas dependências crescerem... Imagina o inferno.

Enfim. Alguém saberia explicar melhor ?
27/06/2012 15:59


1
ja está confiigurado o arquivo DataSourse?


dataSource {
pooled = true
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
//dbCreate = "create-drop" // one of 'create', 'create-drop','update'
//url = "jdbc:hsqldb:mem:devDB"

dbCreate = "update"
driverClassName = "org.seu driver do banco.Driver"
username = "usuario"
password = "senha"
url = "jdbc:(postgres ou my sql)://127.0.0.1/nome do seu banco"

}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
driverClassName = "org.seu driver do banco.Driver"
username = "usuario"
password = "senha"

url = "jdbc:(postgres ou my sql)://127.0.0.1/nome do banco"
}
}


}
27/06/2012 16:01


0
observe que nao esta pronto basta colocar os nomes correto exemplo de como faço no postgres

dataSource {
pooled = true
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
//dbCreate = "create-drop" // one of 'create', 'create-drop','update'
//url = "jdbc:hsqldb:mem:devDB"

dbCreate = "update"
driverClassName = "org.postgresql.Driver"
username = "usuario"
password = "senha"
url = "jdbc:postgresql://127.0.0.1/meubanco"

}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
driverClassName = "org.postgresql.Driver"
username = "usuario"
password = "senha"

url = "jdbc:postgresql://127.0.0.1/meubanco"
}
}


}


espero ter ajudado...
27/06/2012 16:03


0
Opa, valeu pelo retorno man...

Como coloquei acima, tudo estava configurado corretamente tive somente que adicionar a dependência de runtime no BuildConfig.groovy

Reparando agora, ao executar pela segunda vez, ele não fez mais o passo do Download da lib, logo o que coloquei na minha resposta se tornou inverdade. Porém, ainda queria entender porque esse passo começou a se tornar obrigatório e se não, porque eu tive que fazê-lo ???

Enfim, vou continuar a caça...

Abs []
27/06/2012 16:27


1
Você tem que acrescentar a dependencia de alguma maneira. A partir do Grails 2.0 a maneira padrão é essa no Build.config, antes disso você tinha que colocar manualmente o jar na pasta lib do projeto, o que ainda pode ser feito se você quiser.

Talvez no seu outro projeto o drivers já estava na pasta lib.
27/06/2012 17:05


0
Opa rcauler, valeu pelo retorno...

Pois é cara, devo ter deixado passar algo... Não faz sentido, inclusive ontem mesmo coloquei esse arquivo em um repositório remoto e fui verificar os commits que já havia feito nesse projeto.

O BuildConfig.groovy estava com a configuração original e quando comecei com o Projeto foi no GRails 2.0.0.

O passo de colocar a lib do MySQL manualmente na pasta lib eu me lembro bem, mas nunca precisei configurar o BuildConfig, tanto que nessa vez fui com fé e só adicionei o jar do Connector na pasta lib (inclusive o mesmo do projeto passado :D) só que não funfou.

Enfim, resolvido já foi, só que ainda quero entender o porque mudou. Rsrsrsrs :D

Abs []
27/06/2012 17:46



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto