java - hibernate - java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory

标签 java hibernate ant log4j runtime-error

我尝试使用 hibernate 和 HSQLDB 运行简单的程序。

我在这个项目中使用 log4jlog4j.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

schemaexport error

但是我没有使用slf4j为什么会出现这种情况?

这是我的 lib 文件夹的内容,其中包含它使用的所有 jar:

lib struckture

我不明白为什么会发生这种情况?

这是更好的项目结构:

project struckture

编辑:

我添加了 slf4j-api-1.6.1.jarslf4j-log4j12-1.6.1.jar 但它抛出:

BUILD FAILED /home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError: javax/persistence/EntityListeners

您可以在这里看到它的外观:

entity listeners

如何解决这个问题?

最佳答案

Hibernate 使用SLF4J在内部进行自己的日志记录。它是不同日志记录实现之上的抽象层。框架喜欢使用这个外观,因为在这种情况下,您仍然独立于某些实现。您还可以使其与 log4j 一起使用。关注 this tutorial使其协同工作。

关于java - hibernate - java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177833/

相关文章:

java - 如何在 IntelliJ 中配置 Spring Boot Run Configuratipon

java - 使用 google + 登录时如何询问范围的个人权限?

Ant:有条件地添加资源

java - 在 MacOS 10.11.6 中设置环境变量和路径

multithreading - 蚁群优化中的数据并行

java - 如何设置图像以给定的速度移动?

java - Vaadin DateField 将空值保存到数据库

java - 无法使用注释在 Spring IOC 中创建请求范围 bean

java - 如何使用属性将 Hibernate HQL/SQL 结果(List)添加到 JavaFX TableView(ObservableList)?

java - 风格? Java中复制构造函数签名的方法