Erreur "java.lang.IncompatibleClassChangeError: Implementing class"
je suis entrain de faire une application web hibernate annotation , mysql
j' ai un message d erreur la voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
Initial creation failed. : java.lang.IncompatibleClassChangeError: Implementing class
26-juin-2012 17:45:43 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet ServletUser a généré une exception
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.demo.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
at com.demo.dao.impl.UserImpldao.add(UserImpldao.java:17)
at com.demo.controlleur.ServletUser.doPost(ServletUser.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619) |
voici la classe hibernate utile
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
package com.demo.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
@SuppressWarnings("unchecked")
public class HibernateUtil {
private static final SessionFactory sessionfactory;
static{
try{
sessionfactory = new AnnotationConfiguration()
.configure().buildSessionFactory();
}catch (Throwable ex) {
System.err.println("Initial creation failed. : " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory(){
return sessionfactory;
}
} |
voici classe userimpldao
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import java.util.ArrayList;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.demo.bean.User;
import com.demo.dao.Dao;
import com.demo.util.HibernateUtil;
public class UserImpldao implements Dao<User> {
@Override
public void add(User obj) {
try{
Transaction tx =null;
Session session = HibernateUtil.getSessionFactory().openSession();
tx=session.beginTransaction();
session.saveOrUpdate(obj);
tx.commit();
}catch (Exception e) {System.out.println("erreur add : " +e);
}
}
@Override
public ArrayList<User> findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public User findByid(long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void remove(User obj) {
// TODO Auto-generated method stub
}
@Override
public void update(User obj) {
// TODO Auto-generated method stub
}
} |
voici class servletuser
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
*/
public class ServletUser extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out =response.getWriter();
String login = request.getParameter("login");
String pasword = request.getParameter("pasword");
if(!login.isEmpty()&&!pasword.isEmpty()){
User u = new User();
UserImpldao unuser = new UserImpldao();
u.setUsername(login);
u.setPassword(pasword);
unuser.add(u);
}
else{
out.println("<b><i>Please enter event title and date.</i></b>");
}
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
voici interface Dao
import java.util.ArrayList;
public interface Dao<T> {
public ArrayList<T> findAll();
public T findByid(long id);
public void add(T obj);
public void update(T obj);
public void remove(T obj);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
voici ma classe User
package com.demo.bean;
// Generated 16-mai-2012 23:03:26 by Hibernate Tools 3.3.0.GA
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* User generated by hbm2java
*/
@Entity
@Table(name = "user", catalog = "demo")
public class User implements java.io.Serializable {
private Integer iduser;
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "iduser", unique = true, nullable = false)
public Integer getIduser() {
return this.iduser;
}
public void setIduser(Integer iduser) {
this.iduser = iduser;
}
@Column(name = "username", nullable = false, length = 45)
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
@Column(name = "password", nullable = false, length = 45)
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
} |
log4j:WARN No appenders could be found for logger
Citation:
Envoyé par
DevServlet
Le problème semble lié à une incompatibilité de version Hibernate, peux tu vérifier les points suivants :
-Que tu n'aies pas 2 versions Hibernate qui trainent dans ton classpath
-Que tu utilises bien une version jdk>= 1.5
bonjour
ca marche j' avais 2 versions hibernates et la version jdk1.6,j ' ai de nouveau message erreur la voici
mes fichiers jar se trouve dans le répertoire lib de mon projet
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
Initial creation failed. : java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
28-juin-2012 23:28:34 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet ServletUser a généré une exception
java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
at org.hibernate.cfg.Configuration.createReflectionManager(Configuration.java:2989)
at org.hibernate.cfg.Configuration.createReflectionManager(Configuration.java:2984)
at org.hibernate.cfg.Configuration.reset(Configuration.java:307)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:298)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:302)
at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:75)
at com.demo.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
at com.demo.dao.impl.UserImpldao.add(UserImpldao.java:17)
at com.demo.controlleur.ServletUser.doPost(ServletUser.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619) |
merci
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
Citation:
Envoyé par
DevServlet
bonjour
j' ai de nouveau message d' erreur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Initial creation failed. : java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
30-juin-2012 18:47:42 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet ServletUser a généré une exception
java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)
at com.demo.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
at com.demo.dao.impl.UserImpldao.add(UserImpldao.java:17)
at com.demo.controlleur.ServletUser.doPost(ServletUser.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619) |
voici mes fichiers jar de mon application
antlr.jar
asm.jar
asm-attrs.jar
cglib-2.2.jar
commons-logging-api-1.1.jar
commons-logging-1.0.4.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
log4j.jar
javassist-3.4.GA
jta-1.1.jar
slf4j-api-1.5.6.jar
slf4j-simple-1.5.6.jar
hibernate3
ejb3-persistence.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
merci
og4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version)
Citation:
Envoyé par
DevServlet
Il te faut un peu chercher je pense :mrgreen:. Ton erreur est assez explicite :
Code:
java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
, il existe des utilitaires comme winrar qui te permettent de parcourir un jar, cherches donc la classe manquante dans tes jars existants, si la classe n'y est pas tu la télécharges.
merci ça marche
j ' ai juste un message mais je ne sais pas qu'est-ce que ça savais dire
Code:
1 2 3
|
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly. |
org.hibernate.hql.ast.QuerySyntaxException: user is not mapped
Citation:
Envoyé par
DevServlet
Eh ben finalement tu y es arrivé. Ce dernier message n'est pas une erreur, c'est juste Log4J qui te previent qu'il ne trouve pas ton fichier de config log4J.properties ou .xml, plus d'infos
ici
bonjour
voici le message d' erreur
Code:
1 2
|
erreur login : org.hibernate.hql.ast.QuerySyntaxException: user is not mapped [from user u where u.username ='obj.getUsername()'and u.password='obj.getPassword()' ] |
voici la classe userimpl
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public class Userimpl implements UserDao {
@Override
public boolean validateLogin(User obj) {
Boolean drap =false;
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx =null;
User elem = null;
ArrayList<User> result =null;
try{
tx=session.beginTransaction();
Query q =session.createQuery(
"from user u where u.username ='obj.getUsername()'and u.password='obj.getPassword()' " );
q.setString("username",obj.getUsername());
q.setString("password",obj.getPassword());
result= (ArrayList<User>)q.list();
Iterator<User> it =result.iterator();
while(it.hasNext()){
elem =(User)it.next();
}
if(elem.getUsername()!=null && elem.getPassword()!=null)
drap=true;
else
drap=false;
}catch (Exception e) {System.out.println("erreur login : " +e);}
return drap;
} |
voici servlet de la classe Userservlet
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out =response.getWriter();
// on récupère les valeurs des deux champs du formulaire de la page de login
String username = request.getParameter("login");
String password = request.getParameter("pasword");
HttpSession session =request.getSession();
// on créé un objet User pour conserver les informations de l'utilisateur...
User user = new User();
user.setUsername(username);
user.setPassword(password);
Userimpl u = new Userimpl();
//... et on le stocke dans la session courante.
session.setAttribute("userimpl",u);
if( u.validateLogin(user)==true)
getServletContext().getRequestDispatcher("/WEB-INF/Useraffiche.jsp").forward(request,response);
else
getServletContext().getRequestDispatcher("/Username.jsp").forward(request,response);
} |
voici message d erreur could not insert
Citation:
Envoyé par
DevServlet
peut on savoir fonctionnellement ce que tu comptes faire dans ta requête? As tu pris le temps de bien comprendre via un tutoriel comment marche les requêtes HQL? (passage de paramètre, traitement des resultats,etc...)
bonjour
j ai un problème d 'insertion dans la table client voici le message d 'erreur :
Code:
org.hibernate.exception.GenericJDBCException: could not insert: [com.livre.beans.Client]