找不到src/hibernate.cfg.xml
我用的是Hibernate 4。当我尝试创建我的工厂连接时,我得到了这个错误找不到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
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);