Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate-java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory_Java_Hibernate_Ant_Log4j_Runtime Error - Fatal编程技术网

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

Hibernate-java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory,java,hibernate,ant,log4j,runtime-error,Java,Hibernate,Ant,Log4j,Runtime Error,我试着用hibernate和HSQLDB运行easy程序 我正在使用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

我试着用hibernate和HSQLDB运行easy程序

我正在使用
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
target时,我发现了下一个错误:

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
,但它抛出:

构建失败 /home/nazar_art/workspace/persistence/build.xml:64: NoClassDefFoundError:javax/persistence/EntityListeners

您可以在此处看到它的外观:


如何解决这个问题?

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

Hibernate内部使用SLF4J进行日志记录。阅读此处的安装说明:您需要在构建和运行时类路径上保留
SLF4J jar

我按照本教程中的说明操作,但遇到了另一个问题。我更新了这个问题,但是在maven的这个链接上,依赖项只有SLF4J,没有log4j。为什么它不只是用于日志记录(尤其是log4j)?