我尝试使用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
并且所有内容都使用schemaexport
构建,构建文件可以see here。
但是当我运行BUILD FAILED
/home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
目标时,我发现了下一个错误:
slf4j
但是我没有使用lib
这导致了什么?
这是我的slf4j-api-1.6.1.jar
文件夹的内容,其中包含所有使用的jar文件:
我无法弄清楚为什么会这样?
这是更好的项目结构:
修改
我添加了slf4j-log4j12-1.6.1.jar
和{{1}},但它会抛出:
建立失败 /home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError:javax / persistence / EntityListeners
你可以在这里看到它的外观:
如何解决这个问题?
答案 0 :(得分:1)
Hibernate在内部使用SLF4J来执行自己的日志记录。它是不同日志记录实现之上的抽象层。框架就像使用这个外观,因为在这种情况下你仍然独立于某些实现。您也可以使用log4j。按照this tutorial使其协同工作。
答案 1 :(得分:0)
Hibernate内部使用SLF4J进行日志记录。请阅读此处的设置说明:http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#tutorial-firstapp-setup您需要在构建和运行时类路径上保留SLF4J jar
。