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

J'ai essayé d'exécuter le programme facile avec hibernate et HSQLDB.

J'utilise log4j pour ce projet avec 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

et tout est construit avec Ant , créez le fichier que vous pouvez voir ici .

Mais quand je cours la cible schemaexport j'ai attrapé la prochaine erreur:

BUILD FAILED
/home/nazar_art/workspace/Persistance/build.xml:64: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

erreur schemaexport

Mais je n'ai pas utilisé slf4j pourquoi cela a-t-il causé?

voici mon contenu du dossier lib avec tous les jars qu'il utilise:

lib hitture

Je ne pouvais pas comprendre pourquoi cela arrive?

Voici une meilleure structure de projet:

projet frappé

EDIT:

J'ai ajouté slf4j-api-1.6.1.jar et slf4j-log4j12-1.6.1.jar mais il lance:

ÉCHEC DE LA CONSTRUCTION   /home/nazar_art/workspace/Persistance/build.xml:64:   java.lang.NoClassDefFoundError: javax/persistence/EntityListeners

vous pouvez voir ici à quoi cela ressemble:

entité listeners

Comment résoudre ce problème?

0

2 Réponses

Hibernate utilise en interne SLF4J pour la journalisation. Lisez les instructions d'installation ici: http: //docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#tutorial-firstapp-setup Vous devez garder SLF4J jar sur la construction et l'exécution classpath.

0
ajouté
Mais à ce lien à la dépendance maven seulement SLF4J, sans log4j. Pourquoi ne pas seulement la façade pour la journalisation (pour log4j en particulier)?
ajouté l'auteur nazar_art, source

Hibernate utilise en interne SLF4J pour effectuer sa propre journalisation. C'est une couche d'abstraction au dessus des différentes implémentations de journalisation. Des cadres comme utiliser cette façade car dans ce cas vous restez indépendant de certaines implémentations. Vous pouvez également le faire fonctionner avec log4j. Suivez ce didacticiel pour le faire fonctionner ensemble .

0
ajouté
J'ai suivi les instructions de ce tutoriel mais j'ai attrapé un autre problème. J'ai mis à jour la question.
ajouté l'auteur nazar_art, source
Maintenant, vous devez ajouter les jar API JPA ...
ajouté l'auteur noone, source