Dúvida iniciando HIBERNATE

12 respostas
R

Estou executando o primeiro exemplo conforme esse tutorial:
http://www.javafree.org/javabb/viewtopic.jbb?t=3721

Mas está dando esse erro:

O que é?

<blockquote>SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.

SLF4J: See <a href="http://www.slf4j.org/codes.html#StaticLoggerBinder">http://www.slf4j.org/codes.html#StaticLoggerBinder</a> for further details.

Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

at org.slf4j.LoggerFactory.(LoggerFactory.java:60)

at org.hibernate.cfg.Configuration.(Configuration.java:151)

at javaapplication3.AmigoDAO.(AmigoDAO.java:12)

at javaapplication3.TesteAmigo.main(TesteAmigo.java:25)

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:306)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)

at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

… 4 more

Java Result: 1</blockquote>

P.S:Alguém sabe onde tem um tutorial do hibernate atualizado?Em portugues…

12 Respostas

cristianosanchez

Aparentemente (java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder) falta a biblioteca SLF4J em seu classpath.

http://www.guj.com.br/posts/list/101797.java#549190

L

Certamente como citado acima vc não teve ter baixado todos os jars necessários para o hibernate ou não mapeou eles no seu projeto

R

Ok. agora estava olhando o tutorial no site da hibernate
(http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial-firstapp.html)
e resolvi fazer o exemplo que eles tem lá para ver se funcionava.
O que faz essa linha?

if (args[0].equals("store")) { mgr.createAndStoreEvent("My Event", new Date()); }

Está dando Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0

Esse se tiro esse if

dá o mesmo erro de antes:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder Exception in thread "main" java.lang.ExceptionInInitializerError

Eu baixei os jar’s qual deles eu coloco?

Se eu coloco todos dá esse erro:

Initial SessionFactory creation failed.java.lang.StackOverflowError Exception in thread "main" java.lang.ExceptionInInitializerError at util.HibernateUtil.<clinit>(HibernateUtil.java:25) at hibernate.EventManager.createAndStoreEvent(EventManager.java:27) at hibernate.EventManager.main(EventManager.java:20) Caused by: java.lang.StackOverflowError

W

Provavelmente o array args no tem nenhum valor.

Cara eu tava com esse erro SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
um tempo atras eu segui esse topico
http://www.guj.com.br/posts/list/100058.java

Sao varios jars do slf4j que vc precisa adicionar no seu projeto.

So pra adicionar, tem um projeto chamado Maven que tem ferramentas pra ant. O legal disso eh que vc pode inserir no seu build script tudo o que eu seu projeto precisa e se os pacotes que vc especificou tem algum dependencia o Maven ira fazer o download de tudo isso e colocar em um repositorio local.
Mais bacana ainda eh que o Maven procura primeiro no repositorio local antes de fazer algum download e tb outros projetos podem usar esse repositorio local e criar as suas proprias dependencias. Eu acho MUITO mais facil do que ficar cacando jars pra cima e pra baixo.

//Daniel

R

esse args vem do método main

public static void main(String[] args) {

vou dar mais uma olhada aqui…

W

RafaelViana:
esse args vem do método main

public static void main(String[] args) {

vou dar mais uma olhada aqui…

Se eu fosse vc nao mudaria nada. Esquece esse ArrayIndexOutOfBoundsException pelo menos agora.

Da uma lida naquele link que eu te passei porque tem uma seria de libs que vc precisa adicionar tipo slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar

R

eu adicionei aquelas lib’s

eu já ate acho que sei onde é o problema lá no tutorial os cara usaram ant acho que para gerar o bd que eles estão usando hsqldb, e eu tentei fazer usando mysql…

W

RafaelViana:
eu adicionei aquelas lib’s

eu já ate acho que sei onde é o problema lá no tutorial os cara usaram ant acho que para gerar o bd que eles estão usando hsqldb, e eu tentei fazer usando mysql…

eh, se vc esta usando mysql vc tem que alterar la no hibernate.cfg.xml

//Daniel

R

Alguém ai tem uma lista de todos os jar’s necessários para rodar no hibernate 3.2?
Quando eu baixo o hibernate tem uma pasta la required, não precisa colocar nenhum outro?

em todos os tutoriais que eu acho precisa de outros jar’s que não acho…

W

RafaelViana:
Alguém ai tem uma lista de todos os jar’s necessários para rodar no hibernate 3.2?
Quando eu baixo o hibernate tem uma pasta la required, não precisa colocar nenhum outro?

em todos os tutoriais que eu acho precisa de outros jar’s que não acho…

To mandando em attach as libs que eu uso num projetinho simples de teste, da uma olhada.

//Daniel

R

Bah valeu pela lista ;D
me ajudou bastante agora me "achei" com os jar's estou quase conseguindo.
criei uns testes mas está dando umerro e não achei muita informação sobre isso no google, não achei nada de diferente no meu código.

O erro:

23/09/2008 21:30:44 org.hibernate.cfg.annotations.Version INFO: Hibernate Annotations 3.4.0.CR2 23/09/2008 21:30:44 org.hibernate.cfg.Environment INFO: Hibernate 3.3.0.GA 23/09/2008 21:30:44 org.hibernate.cfg.Environment INFO: hibernate.properties not found 23/09/2008 21:30:44 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : javassist 23/09/2008 21:30:44 org.hibernate.cfg.Environment INFO: using JDK 1.4 java.sql.Timestamp handling 23/09/2008 21:30:44 org.hibernate.annotations.common.Version INFO: Hibernate Commons Annotations 3.1.0.CR2 23/09/2008 21:30:44 org.hibernate.cfg.Configuration configure INFO: configuring from resource: /hibernate.cfg.xml 23/09/2008 21:30:44 org.hibernate.cfg.Configuration getConfigurationInputStream INFO: Configuration resource: /hibernate.cfg.xml 23/09/2008 21:30:45 org.hibernate.util.XMLHelper$ErrorLogger error

SEVERE: Error parsing XML: /hibernate.cfg.xml(40) The content of element type "hibernate-configuration" must match "(session-factory,security?)".
Exception in thread "main" org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1521)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1448)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1011)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
at TestaUsuario.main(TestaUsuario.java:20)
Caused by: org.xml.sax.SAXParseException: The content of element type "hibernate-configuration" must match "(session-factory,security?)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518)
... 9 more

Só que pelo que li na internet(http://www.guj.com.br/posts/list/21293.java)
se tem o arquivo hibernate.cfg.xml não precisa do hibernate.properties

Ali também tem que:

Configuration por padrão vai buscar um hibernate.properties se você deseja ler um hibernate.cfg.xml você precisa charmar o metodo configure dessa mesma classe Configuration cfg = new Configuration().configure();

Na apostila da Caelum ao invés de new Configuration tem new AnnotationConfiguration.
Isso tem alguma diferença?

Minhas classes estão assim e todas estão no default package:

TestaUsuario.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;


public class TestaUsuario {
    public static void main(String[] args){
        Configuration conf = new AnnotationConfiguration();
        conf.configure();
        SessionFactory factory = conf.buildSessionFactory();
        Session session = factory.openSession();
        
        //cria um teste
        Teste t = new Teste();
        t.setMessage("Teste");
        
        Transaction trans = session.beginTransaction();
        session.save(t);
        trans.commit();
        
        session.close();
    }
}
Teste.java
import javax.persistence.*;
/**
 *
 * @author User
 */

@Entity
public class Teste implements java.io.Serializable {
    
    @Id
    @GeneratedValue
    int id;
    String message;

    public Teste() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
    
    
}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/maconaria</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        
        <mapping resource="teste.hbm.xml"/>
    </session-factory>    
        

</hibernate-configuration>
log4j.properties
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=debug
log4j.logger.org.hibernate.type=info
log4j.logger.org.hibernate.tool.hbm2ddl=debug
teste.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="Teste" table="Teste">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="message"/>
    </class>
</hibernate-mapping>

Outra dúvida se eu uso annotations eu não preciso dos arquivos hbm.xml?

R

Valeu pela ajuda de todos, finalmente consegui fazer funcionar olhando esse pdf:

http://www.marvinlemos.net/download/arquivo/118/hibernate_annotation.pdf
(Vai ajudar bastante quem ta começando com o hibernate)

Mas mesmo assim gostaria de saber por que no projeto acima da aquele erro?

Ainda não consegui rodar o projeto acima, mesmo modificando o hibernate.cfg.xml que eu achei um erro tirando o mapping resource e colocando um mapping class para mapear minha classe.

Fora isso o que mais tem de errado?

Criado 23 de setembro de 2008
Ultima resposta 23 de set. de 2008
Respostas 12
Participantes 4