Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到src/hibernate.cfg.xml_Hibernate - Fatal编程技术网

找不到src/hibernate.cfg.xml

找不到src/hibernate.cfg.xml,hibernate,Hibernate,我用的是Hibernate 4。当我尝试创建我的工厂连接时,我得到了这个错误 Testlog4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more in

我用的是Hibernate 4。当我尝试创建我的工厂连接时,我得到了这个错误

Testlog4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Failed to create sessionFactory object.org.hibernate.HibernateException: src/hibernate.cfg.xml not found
Test
我的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>

        <property name="connection.driver_class">org.Postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://localhost:5432/hibernatedb</property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">test</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <property name="hibernate.search.default.directory_provider">filesystem</property>
        <property name="hibernate.search.default.indexBase">target/indexes</property>
        <mapping class="org.mark.dto.UserDetails"/>
        
    </session-factory>
</hibernate-configuration>
我正在使用Hibernate4。我的配置文件直接位于我的src文件夹下。不知道为什么它没有被检测到

当路径更改为configuration.configure(“hibernate.cfg.xml”)

此错误显示

Testlog4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" Testjava.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator could not be instantiated: java.lang.NoClassDefFoundError: org/hibernate/search/util/logging/impl/LoggerFactory
    at java.util.ServiceLoader.fail(ServiceLoader.java:224)
    at java.util.ServiceLoader.access$100(ServiceLoader.java:181)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:377)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:236)
    at org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(IntegratorServiceImpl.java:53)
    at org.hibernate.service.internal.BootstrapServiceRegistryImpl.<init>(BootstrapServiceRegistryImpl.java:80)
    at org.hibernate.service.internal.BootstrapServiceRegistryImpl.<init>(BootstrapServiceRegistryImpl.java:57)
    at org.hibernate.service.ServiceRegistryBuilder.<init>(ServiceRegistryBuilder.java:76)
    at org.mark.dto.HibernateTest.main(HibernateTest.java:28)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/search/util/logging/impl/LoggerFactory
    at org.hibernate.search.hcore.impl.HibernateSearchIntegrator.<clinit>(HibernateSearchIntegrator.java:49)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:374)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:373)
    ... 7 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.search.util.logging.impl.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 14 more
 
Testlog4j:WARN找不到记录器(org.jboss.logging)的appender。
log4j:警告请正确初始化log4j系统。
log4j:请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 更多信息。
线程“main”Testjava.util.ServiceConfigurationError:org.hibernate.integrator.spi.integrator:Provider org.hibernate.search.hcore.impl.hibernateSearchinegrator中的异常无法实例化:java.lang.NoClassDefFoundError:org/hibernate/search/util/logging/impl/LoggerFactory
在java.util.ServiceLoader.fail处(ServiceLoader.java:224)
在java.util.ServiceLoader.access$100(ServiceLoader.java:181)
位于java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:377)
位于java.util.ServiceLoader$1.next(ServiceLoader.java:445)
位于org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:236)
位于org.hibernate.integrator.internal.IntegratorServiceImpl.(IntegratorServiceImpl.java:53)
位于org.hibernate.service.internal.BootstrapServiceRegistryImpl.(BootstrapServiceRegistryImpl.java:80)
位于org.hibernate.service.internal.bootstrapserviceregistrympl.(bootstrapserviceregistrympl.java:57)
位于org.hibernate.service.ServiceRegistryBuilder。(ServiceRegistryBuilder.java:76)
位于org.mark.dto.HibernateTest.main(HibernateTest.java:28)
原因:java.lang.NoClassDefFoundError:org/hibernate/search/util/logging/impl/LoggerFactory
在org.hibernate.search.hcore.impl.hibernateSarchintegrator上(hibernateSarchintegrator.java:49)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于java.lang.Class.newInstance(Class.java:374)
位于java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:373)
... 还有7个
原因:java.lang.ClassNotFoundException:org.hibernate.search.util.logging.impl.LoggerFactory
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14多
使用的罐子:

最终,文件在IDE中的位置并不重要。它计算的是文件在执行期间的位置,在最后的包中(在您的情况下,可能是生成的jar)

因此,假设根据您已经提供的信息,您的
src/
文件夹应该成为已执行包(jar)的根。这样,由于
hibernate.cfg.xml
位于
src/
中,因此在执行期间它应该位于jar的根目录中。换言之:

而不是:

configuration.configure("src/hibernate.cfg.xml");   
使用:

更新: 对于错误:

Caused by: java.lang.ClassNotFoundException: org.hibernate.search.util.logging.impl.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    ...

我们可以看到类路径中缺少类
org.hibernate.search.util.logging.impl.LoggerFactory
。根据您已经拥有的JAR判断,可以在以下链接中找到缺少的JAR:

您可以使用采用hibernateConfig File参数的configure(File configFile)方法从不同的目录(不一定是类路径)加载hibernate.cfg.xml。 (注意,am使用hibernate 4.3.7)

其优点是,如果您无法访问war文件,但可以访问其他目录中的hibernate文件,例如用于维护

像这样:




您有哪些文件夹?HibernateTest.java文件在哪个文件夹中?HibernateTest.java。它位于src/org.mark.dto中。我在顶部添加了跟踪。不确定我是否丢失了一个罐子或其他东西。上面列出的罐子。hibernate 4.Hi几乎所有必需的jar。尝试下载这个jar:并将其添加到项目中。谢谢。我还必须添加commons-collection-3.2.1.jar和classmate-0.5.4.jar。然后我需要将postgres jar添加到Hibernate库中,只是为了预防。我真的很感谢你的帮助。谢谢
configuration.configure("hibernate.cfg.xml");  
Caused by: java.lang.ClassNotFoundException: org.hibernate.search.util.logging.impl.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    ...
String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml";
File hibernatePropsFile = new File(hibernatePropsFilePath);

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile);

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);