Java 如何修复错误:“INFO: HHH000206: hibernate.properties not found”?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19085816/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to fix the error: "INFO: HHH000206: hibernate.properties not found"?
提问by adarksun
I tried to test whether the hibernate configuration is working properly. I tried but I got an error:
我试图测试休眠配置是否正常工作。我试过了,但出现错误:
INFO: HHH000206: hibernate.properties not found
To do this: I create:
为此:我创建:
[1] hibernate configuration file [using xml]
【1】hibernate配置文件【使用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 name="">
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.default_schema">explorecalifornia</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.connection.password">abc123</property>
</session-factory>
</hibernate-configuration>
[2] A hibernate utility class
[2] 一个休眠实用程序类
public class HibernateUtilities {
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
static{
try{
Configuration configuration = new Configuration().configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
catch(HibernateException exception){
System.out.println("Problem creating session factory");
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setSessionFactory(SessionFactory sessionFactory) {
HibernateUtilities.sessionFactory = sessionFactory;
}
}
[3] The main program:
[3] 主程序:
import org.hibernate.Session;
public class Program {
public static void main(String[] args) {
System.out.println("Hibernate");
Session session = HibernateUtilities.getSessionFactory().openSession();
session.close();
}
}
But i got the following thing when I run the program:
但是当我运行程序时,我得到了以下信息:
Hibernate
Sep 29, 2013 10:47:15 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
Sep 29, 2013 10:47:15 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.5.Final}
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Problem creating session factory
Exception in thread "main" java.lang.NullPointerException
at com.simpleprogrammer.Program.main(Program.java:10)
To solve this I tried Google and apply the ways which i found. but still i could not solve the problem. Can anybody please help me?
为了解决这个问题,我尝试了谷歌并应用了我发现的方法。但我仍然无法解决问题。有人可以帮我吗?
回答by kark
Your problem is creation session Factoryfor your application it happening in HibernateUtilities
class , the reason may be due to , you cannot create a sessionfactory by sessionRegistry
create it by hibernate Configuration class, because you registered your configuration in hibernate.cfg.xml
您的问题是为您的应用程序创建会话工厂,它发生在HibernateUtilities
类中,原因可能是,您无法sessionRegistry
通过休眠配置类创建会话工厂来创建会话工厂,因为您在hibernate.cfg.xml
Just Replace the following code in HibernateUtilities class
只需在 HibernateUtilities 类中替换以下代码
`sessionFactory = configuration.buildSessionFactory(serviceRegistry);`
to
到
`sessionFactory = configuration.buildSessionFactory();`
回答by Hareesh
The configuration files must be placed in the classpath. Make Sure that the hibernate.cfg.xml is in class-path. As your program is console program, u need to place that hibernate.cfg.xml in src folder. If u have placed it in other folder than specify it in Confingure.configure(fileName);
And as answered By Mr.Kark u have to delete following lines
配置文件必须放在类路径中。确保 hibernate.cfg.xml 在类路径中。由于您的程序是控制台程序,您需要将 hibernate.cfg.xml 放在 src 文件夹中。如果您将其放置在其他文件夹中Confingure.configure(fileName);
而不是在其中指定并按照 Mr.Kark 的回答,您必须删除以下几行
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
回答by Ha Nguyen
I think you are missing some hibernate libs (maybe hibernate-tools.jar
I guess). So please check it.
我认为您缺少一些休眠库(也许hibernate-tools.jar
我猜)。所以请检查一下。
Anyway, I saw you using the hibernate annotations, so please try this code and see what happen with error properties not found.
无论如何,我看到您使用了休眠注释,因此请尝试使用此代码并查看未找到错误属性会发生什么情况。
try {
AnnotationConfiguration configuration = new AnnotationConfiguration();
sessionFactory = configuration.configure().buildSessionFactory();
}
回答by Vlad Mihalcea
That's only an INFO message telling that you don't have a hibernate.properties
file. This property file is not mandatory and so it's not what prevents your application from working.
这只是一条 INFO 消息,告诉您没有hibernate.properties
文件。此属性文件不是强制性的,因此它不会阻止您的应用程序工作。
If you want to know what caused the SessionFactory
creation failure, you need to change your catch block to:
如果您想知道是什么导致了SessionFactory
创建失败,您需要将您的 catch 块更改为:
catch(HibernateException exception){
System.out.println("Problem creating session factory");
exception.printStackTrace();
}
You should use a logging framework instead.
您应该改用日志记录框架。
回答by Vitorlui
In my case, I was running the Hibernate 5with JPA annotations on tomcat and stop working when I changed to glassfish 4.1
就我而言,我在 tomcat 上运行带有 JPA 注释的Hibernate 5,当我更改为glassfish 4.1时停止工作
The error:
错误:
hibernate.properties not found
未找到 hibernate.properties
Make sure:src/main/resources/hibernate.cfg.xml exists
确保:src/main/resources/hibernate.cfg.xml 存在
And if you only have the dependency of hibernate-core, I was using hibernate-annotations and hibernate-common-annotations and it was creating conflict. The hibernate 5 doesnt need these two, I had read somewhere.Try to remove ;)
如果你只有 hibernate-core 的依赖,我使用 hibernate-annotations 和 hibernate-common-annotations 并且它会产生冲突。hibernate 5 不需要这两个,我在某处读过。尝试删除;)
After that a new error appears:
之后出现新错误:
java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
The reason was the oldest jboss-logging.jar at: "YOUR_GLASSFISH_FOLDER/glassfish/modules"
原因是最旧的 jboss-logging.jar 位于:“YOUR_GLASSFISH_FOLDER/glassfish/modules”
Why? The hibernate 5has dependency with the newest version of jboss-logging, and the glassfish 4uses the oldest version even if you declare inside your POM file the newest version. Actually I'm using:
为什么?在休眠5具有与JBoss测井的最新版本,并依赖GlassFish的4种用途,即使你宣布你的POM文件中的最新版本旧版本。实际上我正在使用:
org.jboss.logging jboss-logging 3.3.0.Final
Then I downloaded it and replace the old .jar inside the modules path and it back to work, I spent 2 days trying to solve that and I hope it helps some future issues =D
然后我下载了它并替换了模块路径中的旧 .jar 并且它恢复了工作,我花了 2 天的时间试图解决这个问题,我希望它可以帮助一些未来的问题 =D
I used this link to help me: https://medium.com/@mertcal/using-hibernate-5-on-payara-cc242212a5d6#.npq2hdprz
我用这个链接来帮助我:https: //medium.com/@mertcal/using-hibernate-5-on-payara-cc242212a5d6#.npq2hdprz
Another solution, in my case, could be back to the last Hibernate 4 version (4.3.11.Final) but it is already too old in my opinion
在我的情况下,另一个解决方案可能会回到最后一个 Hibernate 4 版本(4.3.11.Final),但在我看来它已经太旧了
回答by ASHISH KUMAR SINGH
session-factoryis a special tag in hibernate it's have no any name so, You can change your code session-factory name=""to session-factoryand try to run.
session-factory是 hibernate 中的一个特殊标签,它没有任何名称,因此,您可以将代码session-factory name=""更改为session-factory并尝试运行。