Problemas com o Hibernate

19 respostas
pmcn

Olá bom dia, estou iniciando com o uso do hibernate, fiz toda a configuração… Porem ao tentar executar… é gerado um erro da JVM - “Fatal exception ocorred” e me mostra o log Java.lang.NullPointerException…

Obrigado! :wink:

19 Respostas

vivi_grieco

O q exatamente vc tentou executar?

C

Esse tipo de execeção é muito genérica, vc poderia colocar o stacktrace?

pmcn

… estou tentando utilizar o hibernate na minha aplicação…porem esta ocorrendo erros. Fiz toda a configuração, porem qdo mando executar e chega na parte do schemas gera um erro (java.lang.NullPointerException), onde me exibe um erro da jvm (Fatal Exception)… se puder me ajudar ou mesmo somente me indicar por onde seguir eu agradeço!

Obrigado!

Erro:

java.lang.NullPointerException
at net.sf.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:4

vivi_grieco

Mostre o stacktrace completo do seu erro… :slight_smile:

pmcn
log4j: Parsing for [root] with value=[INFO, A1].

log4j: Level token is [INFO].

log4j: Category root set to INFO

log4j: Parsing appender named A1.

log4j: Parsing layout options for A1.

log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n].

log4j: End of parsing for A1.

log4j: Parsed A1 options.

log4j: Parsing for [br.com.evoluti] with value=[DEBUG].

log4j: Level token is [DEBUG].

log4j: Category br.com.evoluti set to DEBUG

log4j: Handling log4j.additivity.br.com.evoluti=[null]

log4j: Parsing for [net.sf] with value=[DEBUG].

log4j: Level token is [DEBUG].

log4j: Category net.sf set to DEBUG

log4j: Handling log4j.additivity.net.sf=[null]

log4j: Finished configuring.

2005-06-02 15:29:53,445 [main] INFO  br.com.evoluti.solicit.cadastro.SessionFactory - Iniciando configuração

2005-06-02 15:29:53,507 [main] INFO  net.sf.hibernate.cfg.Environment - Hibernate 2.1.8

2005-06-02 15:29:53,507 [main] INFO  net.sf.hibernate.cfg.Environment - hibernate.properties not found

2005-06-02 15:29:53,539 [main] INFO  net.sf.hibernate.cfg.Environment - using CGLIB reflection optimizer

2005-06-02 15:29:53,554 [main] INFO  net.sf.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling

2005-06-02 15:29:53,570 [main] INFO  net.sf.hibernate.cfg.Configuration - configuring from url: file:/C:/Documents%20and%20Settings/pmiranda/Meus%20documentos/work/java/projetos/solicit/src/main/web/WEB-INF/classes/hibernate.cfg.xml

2005-06-02 15:29:53,773 [main] DEBUG net.sf.hibernate.util.DTDEntityResolver - trying to locate <a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</a> in classpath under net/sf/hibernate/

2005-06-02 15:29:53,773 [main] DEBUG net.sf.hibernate.util.DTDEntityResolver - <a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtdnot">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtdnot</a> found in classpath

2005-06-02 15:30:15,773 [main] ERROR net.sf.hibernate.util.XMLHelper - Error parsing XML: file:/C:/Documents%20and%20Settings/pmiranda/Meus%20documentos/work/java/projetos/solicit/src/main/web/WEB-INF/classes/hibernate.cfg.xml(3) External entity not found: <a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</a>.

2005-06-02 15:30:15,773 [main] ERROR net.sf.hibernate.cfg.Configuration - problem parsing configurationfile:/C:/Documents%20and%20Settings/pmiranda/Meus%20documentos/work/java/projetos/solicit/src/main/web/WEB-INF/classes/hibernate.cfg.xml

org.dom4j.DocumentException: Error on line 3 of document  : External entity not found: <a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</a>. Nested exception: External entity not found: <a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</a>.

at org.dom4j.io.SAXReader.read(SAXReader.java:355)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:967)

at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:926)

at br.com.evoluti.solicit.cadastro.SessionFactory.getSessionFactory(SessionFactory.java:50)

at br.com.evoluti.solicit.cadastro.SessionFactory.getConfiguration(SessionFactory.java:75)

at br.com.evoluti.solicit.cadastro.SessionFactory.exportSchema(SessionFactory.java:41)

at br.com.evoluti.solicit.cadastro.SessionFactory.main(SessionFactory.java:82)

Nested exception:

java.net.ConnectException: Connection timed out: connect

at org.apache.crimson.parser.Parser2.fatal(Unknown Source)

at org.apache.crimson.parser.Parser2.externalParameterEntity(Unknown Source)

at org.apache.crimson.parser.Parser2.maybeDoctypeDecl(Unknown Source)

at org.apache.crimson.parser.Parser2.parseInternal(Unknown Source)

at org.apache.crimson.parser.Parser2.parse(Unknown Source)

at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown Source)

at org.dom4j.io.SAXReader.read(SAXReader.java:339)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:967)

at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:926)

at br.com.evoluti.solicit.cadastro.SessionFactory.getSessionFactory(SessionFactory.java:50)

at br.com.evoluti.solicit.cadastro.SessionFactory.getConfiguration(SessionFactory.java:75)

at br.com.evoluti.solicit.cadastro.SessionFactory.exportSchema(SessionFactory.java:41)

at br.com.evoluti.solicit.cadastro.SessionFactory.main(SessionFactory.java:82)

2005-06-02 15:30:15,789 [main] ERROR br.com.evoluti.solicit.cadastro.SessionFactory - net.sf.hibernate.HibernateException: problem parsing configurationfile:/C:/Documents%20and%20Settings/pmiranda/Meus%20documentos/work/java/projetos/solicit/src/main/web/WEB-INF/classes/hibernate.cfg.xml

java.lang.NullPointerException

at net.sf.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:48)

at br.com.evoluti.solicit.cadastro.SessionFactory.exportSchema(SessionFactory.java:41)

at br.com.evoluti.solicit.cadastro.SessionFactory.main(SessionFactory.java:82)

Exception in thread main
Mauricio_Linhares

Você tá conectado na internet ou tem algum firewall barrando a conexão?

pmcn

Mauricio tem sim um firewall que barra a conexao…Já tinha ouvido algo nesse sentido tambem!
Vc tem alguma solução pra driblar isso…?

Mauricio_Linhares

Você pode definir essa DTD pra ficar local, colocando em vez do public no documento de mapeamento, o caminho físico dela no PC. O problema é que você vai ter que saber onde o seu container vai procurar.

Outra chance é não mexer nas declarações e colocar essa DTD de configuração e a de mapeamento no classpath, talvez funcione, testa aí!

pmcn

Mauricio essa segunda opção que vc me deu… acho que ja tentei realiza-la… copiando o documento direto no diretorio de onde vai ser lido… mas nao deu certo nao…

Ja a da primeira opção ainda nao tentei, to começando a usar o hibernate… onde é que eu defino essas declarações de que fala é no proprio documento (hibernate-configuration-3.0.dtd)?

Mauricio_Linhares

Nops, é no arquivo de configuração, onde tem lá em cima “PUBLIC http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”.

Se eu não me engano você troca PUBLIC por LOCAL e coloca o caminho lá.

pmcn

Mauricio … fiz o que vc indicou porem ainda acusa que nao esta encontrando o documento… qual o local que geralmente fica esse documento? talvez eu esteja jogando no lugar errado…

Mauricio_Linhares

Esse é o problema, você tem que ver os logs e dar uma olhada onde o seu container está procurando pra botar lá.

pmcn

Cara meu log esta assim: Se puder me dizer onde mudar ou acrescentar eu agradeço…

#for debugging log4j itself
log4j.debug=true

#Logger-Priorities:
#DEBUG lowest, prints all messages
#INFO prints all messages with FATAL, ERROR, WARN or INFO priority
#WARN prints all messages with FATAL, ERROR or WARN priority
#ERROR prints all messages with FATAL or ERROR priority
#FATAL highest, prints only FATAL messages

root logger

log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

myfaces logger

log4j.logger.br.com.evoluti=DEBUG
log4j.logger.net.sf=DEBUG

pmcn

e a configuração do documento .dtd esta assim:

<!-- Hibernate file-based configuration document.

<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>

pmcn

Alguem teria uma indicaçao?

Mauricio_Linhares

Lá no topo do seu arquivo de fonfiguração tem isso:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
Troque por:
<!DOCTYPE hibernate-configuration LOCAL
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"C:\CaminhoParaSuaDtd\hibernate-configuration-3.0.dtd">

Aí você vê o log do tomcat pra ver o que é que ele tá dando.

O meu arquivo do Log4J está assim (eu uso o MyEclipse pra startar o Tomcat):

log4j.rootLogger=DEBUG, dest1

log4j.appender.dest1=org.apache.log4j.ConsoleAppender
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%d %-5p %-5c{3} %x -> %m%n

Outra coisa, não sei de onde você tirou isso aqui:

<!DOCTYPE HTML LOCAL "-//C:\Documents and Settings\pmiranda\Meus documentos\work\java\projetos\solicit\src\main\java">
<!-- saved from url=(0064)http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="MSHTML 6.00.2800.1498" name=GENERATOR></HEAD>
<BODY><PRE><!-- Hibernate file-based configuration document.

Mas tá me parecendo meio estranho pra ser um arquivo de configuração.

pmcn

Mauricio, boa tarde… q bom q voltou a me ajudar!rs

Bem, aquele ultimo codigo lá realmente estava errado mesmo… foi uma tentativa…Mas tb ja fiz como vc me indica no (Code1) porem meu arquivo de configuraçao esta diferente uso SQLSever

#for debugging log4j itself
log4j.debug=true

#Logger-Priorities:
#DEBUG lowest, prints all messages
#INFO  prints all messages with FATAL, ERROR, WARN or INFO priority
#WARN  prints all messages with FATAL, ERROR or WARN priority
#ERROR prints all messages with FATAL or ERROR priority
#FATAL highest, prints only FATAL messages

# root logger
log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

# myfaces logger 
log4j.logger.br.com.evoluti=DEBUG
log4j.logger.net.sf=DEBUG

Se estiver muito errado não liga não…rs peguei esse exemplo de outra pessoa…rs Blz!

Mauricio_Linhares

Assim ele mostra tudo:

pmcn:
Mauricio, boa tarde… q bom q voltou a me ajudar!rs

Bem, aquele ultimo codigo lá realmente estava errado mesmo… foi uma tentativa…Mas tb ja fiz como vc me indica no (Code1) porem meu arquivo de configuraçao esta diferente uso SQLSever

# root logger
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

Ele ainda tá dando erro aí?

pmcn

A quem interessar. O problema que estava acontecendo ao meu ver é que o eclipse buscava no plugin do hibernate 2.1.3.jar o arquivo hibernate-configuration.3.0.dtd so que ele nao encontrava la continha somente o 2.0, entao eu adcicionei o hibernate-configuration.3.0.dtd e o hibernate-mapping.3.0 ao hibernate 2.1.3.jar e ficou resolvido esse erro… :wink:

Criado 31 de maio de 2005
Ultima resposta 8 de jun. de 2005
Respostas 19
Participantes 4