Estou iniciando os estudos com o Hibernate e peguei um exemplo pronto da Caelum, o arquivo hibernate.properties eu coloco dentro da pasta src do projeto?
Quando eu executo a main ele dá esse erro, já coloquei todas as bibliotecas no projeto, Core, Annotations, EntityManager, Validator, alguém sabe no que eu to errando.
[i]Esse erro que você está tendo indica que não foi encontrada a classe org/slf4j/impl/StaticLoggerBinder e que você deve visitar o site do SLF4J para mais informações.
O Hibernate usa uma façade para logging e não mais diretamente a implementação. Então vocẽ deve escolher qual implementação de logging usar, sendo o log4j o mais usado. Então no site do SLF4J vocẽ pode ter mais informações e os links para download da implementação de logging que vocẽ quer usar, além de um conector para o mesmo.
Para você entender melhor, o slf4j funciona como uma abstração do logging. Assim você precisa não apenas da implementação (log4j no seu caso), mas também de um conector entre ambos. Nesse caso baixe o zip do slf4j (http://www.slf4j.org/download.html), descompacte e coloque o slf4j-log4j12-1.5.8.jar no seu classpath.
D
douglastc
Fiz o que vcs disseram mas agora está dando esse erro.
O meu arquivo hibernate.properties está dentro da pasta src do projeto e as configurações dele está assim:
Tá dando trabalho esse Hibernate, espero que valha a pena. :D
douglastc, você tem que ler as mensagens de log, elas de dizem qual é o erro.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Você não inicializou o log4j, trocando em miúdos, você precisa de um arquivo log4j.properties dentro do src do seu projeto com as configurações. O hibernate vem com um de exemplo.
J
Jair_Rillo_Junior
Douglas,
No caso do seu hibernate.properties, talvez no post tenha faltado o sinal de igual (=). Se no seu arquivo está sem o sinal de igual, então coloque em todas as linhas. Outra coisa é: Use apenas 1 dialeto. No seu caso, eu deixaria o primeiro dialeto setado (MySQL).
Garcia: no caso do log4j é apenas um WARNING e não é por causa dele que gerou a exception.
T
tRuNkSnEt
Jair Rillo Junior:
Douglas,
No caso do seu hibernate.properties, talvez no post tenha faltado o sinal de igual (=). Se no seu arquivo está sem o sinal de igual, então coloque em todas as linhas. Outra coisa é: Use apenas 1 dialeto. No seu caso, eu deixaria o primeiro dialeto setado (MySQL).
Garcia: no caso do log4j é apenas um WARNING e não é por causa dele que gerou a exception.
So para corrgir, não é necessário colocar = (igual) para delimitar chave de valor em um arquivo properties. Apenas espaço é suficiente.
The key contains all of the characters in the line starting with the first non-white space character and up to, but not including, the first unescaped ‘=’, ‘:’, or white space character other than a line terminator. All of these key termination characters may be included in the key by escaping them with a preceding backslash character; for example,
O warning não causou o erro mas para corrigi-lo faça igual o garcia falou.
O erro é devido ao seu dialeto, tente fazer igual o Jair disse!
D
douglastc
Jair Rillo Junior:
Douglas,
No caso do seu hibernate.properties, talvez no post tenha faltado o sinal de igual (=). Se no seu arquivo está sem o sinal de igual, então coloque em todas as linhas. Outra coisa é: Use apenas 1 dialeto. No seu caso, eu deixaria o primeiro dialeto setado (MySQL).
Garcia: no caso do log4j é apenas um WARNING e não é por causa dele que gerou a exception.
Eu já troquei o acesso pro SQL Server e sempre dá o mesmo erro, será o problema pode estar no arquivo?
R
ralphsilver
adicione o jar commons-logging … procure ler as exceções que está dando… quando vc adicionou a api sl4j ele deu falta de outra classe… vai adicionando que uma hora funfa
J
Jair_Rillo_Junior
Vivendo e aprendendo
Douglas, o igual é entre a key e valor da properties
Jair, mesmo sendo um arquivo .properties o hibernate.properties não usa =, portanto o arquivo do douglastc está corrento.
douglastc, qual o erro que está dando agora? Você corrigiu o problema do log?
D
douglastc
garcia-jj:
Jair, mesmo sendo um arquivo .properties o hibernate.properties não usa =, portanto o arquivo do douglastc está corrento.
douglastc, qual o erro que está dando agora? Você corrigiu o problema do log?
Eu salvei o log dentro do src, tem que mexer em alguma configuração dele? Pois está aparecendo os mesmo erros.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ExceptionInInitializerError
at AdicionaPessoa.main(AdicionaPessoa.java:9)
Caused by: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection avalable
at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:107)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at HibernateUtil.<clinit>(HibernateUtil.java:9)
... 1 more
G
garcia-jj
douglastc, você está certo, o log4j.properties é dentro do src. Mas é estranho ele não estar achando. Você compilou tudo? Ele deveria copiar esse log4j.properties para o diretório classes.
Abraços
T
tRuNkSnEt
garcia-jj:
douglastc, você está certo, o log4j.properties é dentro do src. Mas é estranho ele não estar achando. Você compilou tudo? Ele deveria copiar esse log4j.properties para o diretório classes.
Abraços
Gente, o problema sem duvidas não é com o log4j. Aquilo é um WARNING e WARNING não é ERRO.
Posta novamente seu hibernate.properties poque ele continua errado. Outra coisa posta a classe que você faz o buildSessionFactory para ver se ela esta correta.
O seu hibernate.properties deverá esta mais ou menos assim:
douglastc, você está certo, o log4j.properties é dentro do src. Mas é estranho ele não estar achando. Você compilou tudo? Ele deveria copiar esse log4j.properties para o diretório classes.
Abraços
Eu salvei os arquivos hibernate.properties e o log4j.properties na pasta lib e os erros mudaram. Agora tá aparecendo isso:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)
at HibernateUtil.<clinit>(HibernateUtil.java:7)
at AdicionaPessoa.main(AdicionaPessoa.java:9)
Caused by: java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
at java.util.Properties.loadConvert(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:433)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:122)
... 6 more
D
douglastc
Eliezer Reis:
garcia-jj:
douglastc, você está certo, o log4j.properties é dentro do src. Mas é estranho ele não estar achando. Você compilou tudo? Ele deveria copiar esse log4j.properties para o diretório classes.
Abraços
Gente, o problema sem duvidas não é com o log4j. Aquilo é um WARNING e WARNING não é ERRO. :)
Posta novamente seu hibernate.properties poque ele continua errado. Outra coisa posta a classe que você faz o buildSessionFactory para ver se ela esta correta.
O seu hibernate.properties deverá esta mais ou menos assim:
É claro que não, porém apenas com o logging funcionando conseguiremos saber qual o erro, certo?
douglastc, os arquivos log4j.properties e hibernate.properties precisam estar dentro do seu src. Você usa eclipse? Verifique se ele está mesmo aparecendo na arvore navigator. Compile o projeto (ideal é fazer um clean no projeto via menu Project > Clean all) e depois rodar de novo seu projeto.
Seu hibernate.properties está errado, deve ser assim (sem o =)
É o que eu disse mais acima, isso é um arquivo properties e nao faz diferença ser espaço em branco, igual, ponto e virgula ou dois pontos. Vai dar na mesma.
Ohhhh Doulgas, ta vendo onde tem jdbc:mysql://localhost:3306/meubanco é logico que onde tem meubanco o certo será o colocar o nome do seu banco. Na senha 3299 é logico que vai ter que colocar a senha que você definiu no seu banco. Você está fazendo assim né?
D
douglastc
Eliezer Reis:
garcia-jj:
Seu hibernate.properties está errado, deve ser assim (sem o =)
É o que eu disse mais acima, isso é um arquivo properties e nao faz diferença ser espaço em branco, igual, ponto e virgula ou dois pontos. Vai dar na mesma.
Ohhhh Doulgas, ta vendo onde tem jdbc:mysql://localhost:3306/meubanco é logico que onde tem meubanco o certo será o colocar o nome do seu banco. Na senha 3299 é logico que vai ter que colocar a senha que você definiu no seu banco. Você está fazendo assim né?
Estou sim, o nome do meu banco é test.
T
tRuNkSnEt
Já que o problema aparentemente está naquele arquivo hibernate.properties e você está usando Hibernate Annotations faz o seguinte. Deleta o hibernate.properties :twisted:
Dai substitui o bloco estático daquela sua classe HibernateUtil por este abaixo: