Pergunta

Meu projeto é assim:

/src/main/java
     -thegamers
         -app.java
         -hibernateutil.java

alguém pode me dizer onde colocar o hibernate.cfg.xml?

porque eu estou recebendo este erro:

Initial SessionFactory creation failed.org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
    at thegamers.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at thegamers.App.main(App.java:15)
Caused by: org.hibernate.HibernateException: hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2149)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2130)
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 2 more
Foi útil?

Solução

O arquivo de configuração hibernate.cfg.xml precisa estar classpath.

Isso pode ser feito de diferentes maneiras, dependendo do seu projeto.

  • Para um web-app GUERRA projeto (você estiver executando o programa em um Servlet container):colocando-a em WEB-INF/classes irá trabalhar como ficheiros WEB-INF/classes são visíveis no classpath quando a aplicação está em execução no recipiente.

  • Para um Maven-projeto de estilo (não executar o programa em um Servlet container):colocando-a em /src/main/resources/ vai trabalhar

  • Caso contrário, tente a src/ diretório.

Outras dicas

Eu estou usando o maven, e não funcionou para mim, até que eu ponha os hibernate.cfg.xml no src/main/resources.

Na raiz do seu projeto: /src (a leat como padrão)

Como saber se /src é a fontes dir?
Quando você cria uma nova classe Java, ele está contido em um pacote (normalmente ele é chamado como o mesmo nome do diretório onde ele será criado).Assim, na sua classe declarion você pode ver algo como isto:

package foo;

class MyClass{

No padrão IDE definições, a classe deve encontradas embaixo /src/foo/MyClass.java.Como você pode ver, neste cenário /src atua como raiz fontes dir.

se ele não é projeto da web, em seguida, fazer explicitamente como que

new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()

Espero que isso possa ajudar

@SiB apontou um link(mkyong do web site).Explica-se bem lá.

O arquivo é supor para ir para a raiz do seu /src dir, enquanto /src não é implantado, tudo que é construído/copiados para WEB-INF/classes que É implantado.O Hibernate precisa o cfg.xml arquivo do classpath o seu projeto para carregar as definições de configuração, o seu WEB-INF dir não está na sua classpath, então se você colocá-lo lá, você estaria esconder é a partir do modo de Hibernação e ele não iria funcionar.

Este thread iria dizer-lhe como colocar o hibernate.cfg.xml de qualquer caminho diferente.

Se você estiver usando o Eclipse, vá em Project -> Properties -> Java Build Path -> código Fonte.Você pode adicionar a nova pasta onde você colocou o arquivo, ou mova o arquivo para a pasta existente.

CMD+N/CTR+N, enquanto você está na Tag, será aberta uma caixa de diálogo, você tem a dubbel clique em Hibernar a pasta.Ele vai abrir uma lista de arquivos com o XML extenuation.Selecione o cfg.xml e clique em continuar, e quando você está feito!clique em concluir.Tag irá adicionar o nome da Classe, com a cfg.xml arquivo e mostra-lo em pasta SRC.GB

Lugar hibernate.cfg.xml sob src/ pasta ou explicitamente mencionar o caminho no código como:

new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()

tente colocá-lo em "src/main/resources"directory.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top