3

I made some code to learn hibernate. It is throwing the error below. How do I find out what the problem is and fix it ? dom4j sounds like an XML problem. hibernate.cfg.xml is the problem ?

Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at com.examscam.model.User.persist(User.java:45)
at com.examscam.model.User.main(User.java:57)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more

(why is eclipse not showing this "2more" thing ?)

Code -

package com.examscam.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;


@Entity
public class User {

private Long id;
private String password;

@Id
@GeneratedValue

public Long getId(){
    return id;

}

public void setId(Long id){

    Class c1 = User.class;
    this.id = id;

}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public static void persist(){

    /* 
     * Contains all the info needed to connect to database, along with
     * info from your JPA annotated class, ie this class. 
    */
    AnnotationConfiguration config = new AnnotationConfiguration();
    config.addAnnotatedClass(User.class);
    config.configure();

    SchemaExport schemaExport = new SchemaExport(config);
    schemaExport.create(true, true);

}


public static void main(String[]args){

    persist();

}

}

XML file -

<?xml version = '1.0' encoding='UTF-8' ?>

<!Doctype hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

<property name = "connection.url">
jdbc:mysql://localhost/examscam
</property>

<property name = "connection.username">
root
</property>

<property name = "connection.password">
password
</property>

<property name = "connection.driver_class">
com.mysql.jdbc.Driver
</property>

<property name = "dialect">
org.hibernate.dialect.MySQLDialect
</property>

<property name = "transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>

<property name = "current_session_context_class">
thread
</property>

<!-- this will show us all the SQL statements-->

<property name = "hibernate.show_sql">
true
</property>

<!-- We dont use any mapping files as of now-->

</session-factory>
</hibernate-configuration>

UPDATE

After fixing the above errors, there is a new problem -

I am making code with eclipse. I added all the possible jars needed for the code and my code is still not working. Why is this error java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder occurring when i already added sl4fj ( slf4j-api-1.5.8.jar) to build path ?

The error -

  SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j   
  /impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)
at com.examscam.model.User.persist(User.java:45)
at com.examscam.model.User.main(User.java:57)
   Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 9 more
3
  • Seems some jar is missing. Commented Apr 17, 2013 at 4:06
  • @Sudhanshu - what made you think that ? Is it java.lang.NoClassDefFoundError: org/dom4j/DocumentException ? Commented Apr 17, 2013 at 4:07
  • Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException Commented Apr 17, 2013 at 4:09

2 Answers 2

21

Make sure dom4j.jar is in the classpath.

What you are saying by 2more.

When you see '...2 more', that means that the remaining lines of the 'caused by' exception are identical to the remaining lines from that point on of the parent exception.

Sign up to request clarification or add additional context in comments.

12 Comments

All the other jars put. but now a new error of same type occurs. strange.
Means there are still some transitive dependencies left, keep on updating the classpath, till this error is not resolved. If its just a small test kind of stuff switch to Maven, will reduce your effort a lot.
How will it reduce my effort ? I think that eclipse uses maven and other such things behind the scenes to make our project work. I guess i should let eclipse handle all that for now.
Like now you are facing issues with transitive dependencies, maven will automatically do it for you, by reading the pom files of dependencies in your case hibernate.
And yes eclipse will do it for you, if you have configured your project as a maven project. Else NO
|
1

Add dom4j.jar is in the lib of the project.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.