我正在尝试使用hibernate3.6.10.Final和Eclipse IDE完成this Java Brains tutorial on hibernate,并且遇到了视频中未涉及的异常。这是输出:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.hibernate.cfg.Configuration.reset(Configuration.java:332)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:298)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:302)
at com.helo478.firsthibernateproject.SimpleTest.setUpHibernate(SimpleTest.java:31)
at com.helo478.firsthibernateproject.SimpleTest.main(SimpleTest.java:19)
Caused by: java.lang.NullPointerException
at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:167)
at org.hibernate.cfg.Environment.<clinit>(Environment.java:618)
... 5 more
[编辑]我认为前三行代码是无关紧要的,因为我已经看到了这个程序的工作版本(在教程中)有输出。然而,似乎问题确实与slf4j罐子有关。谢谢@Jayaram Pradhan和@ drurenia [/ EDIT]
我已经在StackOverflow上进行了一些搜索并找到了this similar case(实际上他们可能正在做相同的教程)。不幸的是,该线程目前还没有可用的解决方案。提问者从头开始并使用不同的数据库解决了他们的问题。我已经完成了(使用PostgreSQL和MySQL),每个都得到相同的错误。
另一个响应表明配置文件应该在项目根目录中,并且Configurations.configure()方法采用可选的String文件路径。我已经尝试将hibernate.cfg.xml文件放在项目根目录以及“src”目录中。我也尝试使用.configure()方法的参数指向文件。产量没有变化。
因为我的Java代码的每一行都是直接从教程中获取的,所以我认为我的hibernate.cfg.xml文件很可能存在问题。该文件是从与hibernate3打包的模板中更改的。我只是将其更改为引用MySQL数据库。作为Hibernate的新手,我想我一定是犯了错误。这是完整的文字:
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernatedb</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</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>
<!-- Names the annotated entity class -->
<mapping class="com.helo478.firsthibernateproject.User" />
</session-factory>
</hibernate-configuration>
我的问题是:
如果有的话,我在hibernate.cfg.xml文件中做错了什么?如果没有错,还有什么可以解释失败?
答案 0 :(得分:1)
我没有看到您正在考虑的教程,但是从您的堆栈跟踪看起来,您的slf4j
依赖项不存在。
请参阅以下链接,这些链接可帮助您添加slf4j
相关性:
Hibernate 3.4 with slf4j and log4j
http://www.slf4j.org/manual.html
确保您拥有:
•slf4j-api-1.7.5.jar
•slf4j-simple-1.6.1.jar
在你的lib中。