我尝试使用 hibernate 和 HSQLDB 运行简单的程序。
我在这个项目中使用 log4j
和 log4j.properties
:
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %c{1}:%L - %m%n
# Root logger option
log4j.rootLogger=INFO, stdout
# Hibernate logging options (INFO only shows startup messages)
log4j.logger.org.hibernate=INFO
# Log JDBC bind parameter runtime arguments
log4j.logger.org.hibernate.type=INFO
一切都是用Ant
构建的,你可以构建文件 see here .
但是当我运行 schemaexport
目标时,我发现了下一个错误:
BUILD FAILED
/home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
但是我没有使用slf4j
为什么会出现这种情况?
这是我的 lib
文件夹的内容,其中包含它使用的所有 jar:
我不明白为什么会发生这种情况?
这是更好的项目结构:
编辑:
我添加了 slf4j-api-1.6.1.jar
和 slf4j-log4j12-1.6.1.jar
但它抛出:
BUILD FAILED /home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
您可以在这里看到它的外观:
如何解决这个问题?
最佳答案
Hibernate 使用SLF4J在内部进行自己的日志记录。它是不同日志记录实现之上的抽象层。框架喜欢使用这个外观,因为在这种情况下,您仍然独立于某些实现。您还可以使其与 log4j 一起使用。关注 this tutorial使其协同工作。
关于java - hibernate - java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177833/