dúvida referente a aula 2 - problemas com a aplicação

13/01/2010

Boa noite Dyego estou fazendo suas aulas relativas a aplicaçao completa utilizando o hibernate e tive um problema baixei as seguintes versões do hibernate:
 hibernate-3.3.1.GA inseri as seguints bibliotecas desta versão:
 hibernate-3.3.1.GA/hibernate3.jar; hibernate-3.3.1.GA/lib/required/antlr-2.7.6.jar;hibernate-3.3.1.GA/lib/required/commons-collections-3.1.jar;hibernate-3.3.1.GA/lib/required/dom4j-1.6.1.jarhibernate-3.3.1.GA/lib/required/javassist-3.4.GA.jar;hibernate-3.3.1.GA/lib/required/jta-1.1.jar;hibernate-3.3.1.GA/lib/required/slf4j-api-1.5.2.jar;hibernate-3.3.1.GA/lib/bytecode/cglib/hibernate-cglib-repack-2.1_3.jar;hibernate-3.3.1.GA/lib/bytecode/javassist/javassist-3.4.GA.jar;hibernate-3.3.1.GA/lib/optional/c3p0/c3p0-0.9.1.jar
hibernate-annotations-3.4.0.GA bibliotecas inseridas:hibernate-annotations-3.4.0.GA/hibernate-annotations.jar;hibernate-annotations-3.4.0.GA/lib/ejb3-persistence.jar;hibernate-annotations-3.4.0.GA/lib/hibernate-commons-annotations.jar
hibernate-entitymanager-3.4.0.GA bibliotecas inseridas:hibernate-entitymanager-3.4.0.GA/hibernate-entitymanager.jar;hibernate-entitymanager-3.4.0.GA/lib/test/antlr.jar;hibernate-entitymanager-3.4.0.GA/lib/test/asm-attrs.jar;hibernate-entitymanager-3.4.0.GA/lib/test/asm.jar;hibernate-entitymanager-3.4.0.GA/lib/test/cglib.jar;hibernate-entitymanager-3.4.0.GA/lib/test/log4j.jarE inseri tambem a biblioteca Driver do JavaDB.

Utilizo o netbeans versão 6.5 e ao compilar o programa apareceu a seguinte mensagem de erro:

"run:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
        at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
        at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
        at firsthibernateapp.Main.main(Main.java:23)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 3 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)"

Refiz os codigos das duas aulas novamente e aparece o mesmo erro. O que posso fazer para corrigir esta falha e continuar assistindo as vídeos aulas?

Desde já agradeço.

Marcos Sousa

Marcos Sousa

Curtidas 0

Respostas

Dyego Carmo

Dyego Carmo

13/01/2010

Existe realmente um problema nesse pack... referente a biblioteca SLF4J...


Baixe ela diretamente aqui : http://www.slf4j.org/dist/slf4j-1.5.2.zip

E adicione os seguintes arquivos deste ZIP no seu CLASSPATH:

slf4j-log4j12-1.5.2.jar
slf4j-api-1.5.2.jar
log4j-over-slf4j-1.5.2.jar

E teste denovo ...

Ou tente baixar uma versao mais atual do hibernate (que ele jah corrigiram isto)

Valeu !

GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Ahh , nao esqueca do lf4j-simple-1.5.2.jar tambem

GOSTEI 0
Marcos Sousa

Marcos Sousa

13/01/2010

Boa noite Dyego. Baixei o slf4j-1.5.2.zip pelo link que voce me passou é fiz a inclusão no projeto das referidas bibliotecas a única que não consegui achar foi a última que voce me pediu para fazer a inserção:
lf4j-simple-1.5.2.jarDepois de inseridas as demais bibliotecas e ter compilado o programa novamente apareceu a seguinte mensagem de erro:

" 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.RuntimeException: Uncompilable source code - non-static method openSession() cannot be referenced from a static context
        at firsthibernateapp.Main.main(Main.java:40)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 13 segundos)
"

No código da classe main logo após a criação da sessionFactory

" SessionFactory sf = new AnnotationConfiguration()
              .setProperty("hibernate.dialect","org.hibernate.dialect.DerbyDialect")
              .setProperty("hibernate.connection.driver_class", "org.apache.derby.jdbc.ClientDriver")
              .setProperty("hibernate.connection.url","jdbc:derby://localhost:1527/testhibernate")
              .setProperty("hibernate.connection.username", "test")
              .setProperty("hibernate.connection.password", "test")
              .setProperty("hibernate.show_sql", "true")
              .setProperty("hibernate.format_sql", "true")
              .setProperty("hibernate.c3p0.acquire_increment", "1")
              .setProperty("hibernate.c3p0.idle_test_period", "100")
              .setProperty("hibernate.c3p0.max_size", "10")
              .setProperty("hibernate.c3p0.max_statements", "0")
              .setProperty("hibernate.c3p0.min_size", "5")
              .setProperty("hibernate.c3p0.timeout", "100")
              .addAnnotatedClass(Users.class)
              .buildSessionFactory();"

Aparece um erro na seguinte linha do codigo:

 Session session = SessionFactory.openSession();

Ao passar o mouse pela seguinte linha de codigo a seguinte mensagem e disparada:

"erro non-static method openSession() cannot be referenced from a static context"

Este erro tambem tem alguma relação com a falta de algumas bibliotecas?

Em sua mensagem voce cita a possibilidade de utilizar outra versão do hibernate core. Neste caso qual versão do hibernate posso incluir no projeto para sanar estes problemas? Eu tenho o hibernate-distribution-3.3.2.GA.


Desde já agradeço pelo apoio.
GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Opa !

Marcos,

Muito estranho , experiemente colocar TODAS as bibliotecas que vem nos diretorios LIB tanto do hibernate quando do entitymanager , e teste...


Baixe a versao mais atualizada dos dois tmb...

Mas tome cuidado... pois as versoes entre estas bibliotecas podem ser incompativeis...

verifique a compatibilidade entre versoes aqui:

https://www.hibernate.org/6.html#A3

e me avise qualquer coisa...
GOSTEI 0
Marcos Sousa

Marcos Sousa

13/01/2010

Boa tarde Dyego. Segue abaixo a sequência de procedimentos que fiz para solucionar o erro de execução do projeto: Infelizmente ainda não conseguimos êxito   Incluir as bibliotecas do lib hibernate-3.3.1.GA:      Optional: o       ehcache-1.2.3; o       jboss-cache-1.4.1.GA; o       jbosscache-core-2.1.1.GA o       oscache-2.1; o       proxool-0.8.3; o       swarmcache-1.0RC2;       Todas as bibliotecas do required       Todas as bibliotecas do bytecode;   Do hibernate-entitymanager-3.4.0.GA inclui as seguintes bibliotecas:  dom4j; ejb3-persistence; hibernate-annotations; hibernate-commons-annotations; hibernate-core;javassistjtalf4j-api   Logo após a inclusão destas bibliotecas compilei novamente o projeto e o erro apareceu novamente:   “run: 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.RuntimeException: Uncompilable source code - non-static method openSession() cannot be referenced from a static context         at firsthibernateapp.Main.main(Main.java:40) Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 11 segundos)”     Apos este teste removi todas as bibliotecas e inseri as devidas bibliotecas   Ø      hibernate-distribution-3.3.2.GA: o       lib/required/ antlr-2.7.6; o       lib/required/ commons-collections-3.1; o       lib/required/ dom4j-1.6.1; o       lib/required/ javassist-3.9.0.GA; o       lib/required / jta-1.1; o       lib/required / slf4j-api-1.5.8 o       bytecode/cglib/ cglib-2.2; o       bytecode/javassist/ javassist-3.9.0.GA; o       \optional\c3p0c3p0-0.9.1   Ø      hibernate3 Ø      hibernate-annotations-3.4.0.GA o       \libejb3-persistence; o       \lib\hibernate-commons-annotations   Ø      hibernate-annotations   Ø      hibernate-entitymanager-3.4.0.GA   o       lib\testantlr; o       lib\testasm; o       lib\testasm-attrs; o       lib\test\  cglib o       lib\test \ log4j     Ø      hibernate-entitymanager Ø      Driver Java DB   Após a inclusão destas bibliotecas e verificar a compatibilidade de versões   Ø      hibernate-distribution-3.3.2.GA tem compatibilidade com as versões: o       hibernate-annotations-3.4.0.GA (Compatível 3.4.X o       hibernate-entitymanager-3.4.0.GA (Compatível 3.4.X)   Notei que a classe main nas linhas de código ainda apareciam o seguinte aviso de erro:   //mensagem de erro non-static method openSession() cannot be referenced from a static context       Session session = SessionFactory.openSession();        SessionFactory.close();   Executei o programa e o seguinte erro foi mostrado:   “SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder         at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)         at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)         at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)         at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)         at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)         at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)         at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)         at firsthibernateapp.Main.main(Main.java:23) Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)         at java.security.AccessController.doPrivileged(Native Method)         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)         ... 8 more Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)  “   Logo após acrescentei as seguintes bibliotecas do SLF4J-1.5.2
slf4j-log4j12-1.5.2.jar
slf4j-api-1.5.2.jar
log4j-over-slf4j-1.5.2.jar   Ao executar novamente o projeto a seguinte mensagem de erro foi apresentada:   “run: 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.RuntimeException: Uncompilable source code - non-static method openSession() cannot be referenced from a static context         at firsthibernateapp.Main.main(Main.java:40) Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)”   O que devo fazer para corrigir este problema?   Desde já agradeço pelo apoio.
GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Troque: Session session = SessionFactory.openSession(); para: Session session = sf.openSession(); E teste.
GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Olá !

Testou ?


GOSTEI 0
Marcos Sousa

Marcos Sousa

13/01/2010

Boa noite Dyego. Fiz a sua alteração sugerida por voce e o codigo ainda teve erro de compilação. Segue abaixo o trecho do codigo identado para melhor analise:
 http://paste-it.net/public/c6af026/

Logo apos compilar o codigo apareceu a seguinte mensagem de erro:
 http://paste-it.net/public/d03b79d/Fiz com isso um outro procedimento que não tinha feito antes. Fui na aba serviços, cliquei com o botão direito em cima do banco testhibernate criado na aula 1 e pedi para conectar. Ao compilar novamente o projeto, ele apresentou alguns erros mais rodou a aplicação. Veja o resultado:
http://paste-it.net/public/v1f69c0/O que deve estar acontecendo com a aplicação. Esqueci algum JAR ou fiz alguma coisa errada na criação das tabelas na primeira aula.

As tabelas que criei foram:
invoice;invoice_itens;users;productsAs views criadas são:
testeview;numberofitenswithamounthigtherDesde já agradeço pelo apoio.

GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Opa ! Funcionou tudo belezinha...

O erro que voce obteve foi porque o banco de dados nao estava no ar , quando voce conectou nele o proprio NetBeans deu start nele... depois disso tudo funcionou perfeitamente...

Esta tudo OK.... :)

as mensagens que vc recebeu de warnings nao eh para se preocupar , manda bala que esta tudo certinho...


Valeu !

ps: posso fechar o chamado ?

GOSTEI 0
Marcos Sousa

Marcos Sousa

13/01/2010

Boa tarde Dyego. Na sua video aula voce mandou conectar primeiro o banco para depois rodar a classe main? Estes avisos de erro não vão influenciar na aplicação? Queria saber um pouco mais sobre eles, alem da devmedia tem outra fonte para aprofundar mais? Por mim pode fechar o chamado.
GOSTEI 0
Dyego Carmo

Dyego Carmo

13/01/2010

Opa !


Sempre deixo iniciado o banco de dados antes de rodar qualquer coisa... pois ele tem que estar no ar para acessar os dados...

Qualquer coisa estamos ai !
GOSTEI 0
Marcos Sousa

Marcos Sousa

13/01/2010

Muito obrigado por ter esclarecido as dúvidas. Semana que vem vou dar continuidade as vídeos aulas. Desejo um bom fim de semana.
GOSTEI 0
POSTAR