Zum Inhalt springen

Problem mit Elipse/Hibernate - Bitte um dringende Hilfe


Empfohlene Beiträge

Geschrieben

Hallo,

uns ist im Studium kurzfristig ein Projekt aufgedrückt worden. Leider habe ich in diesem Bereich noch nie etwas gemacht. Es geht um Datenbanken. Wir sollen dort eine Verbindung von MySQL zu Eclipse erstellen. Ich habe mich dazu eingetragen dies mit der Schnittstelle Hibernate zu machen. Dort bin ich heute in Eclipse auch ein gutes Stück voran gekommen. Leider bekomme ich nun einen dicken Fehler und es geht nicht weiter.

Da am nächsten Mittwoch schon Abgabetermin ist benötige ich nun dringend Hilfe.

Also, in MySQL ist eine Datenbank erstellt und in Eclipse habe ich nach einem Tutorial auch alles richtig implementiert. Nun wir bei mir aber dieser Fehler geworfen:

%%%% Error Creating HibernateSessionFactory %%%%

org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

Weiß hier vielleicht jemand, woran dies genau liegen kann.

Für Eure schnelle Hilfe bin ich Euch jetzt schon einmal sehr dankbar.

Vielen Dank schon einmal im Voraus!!

Bis denne

Buergy

Geschrieben

Schön das sich hier schon so früh jemand meldet. Das freut doch sehr. :)

Hier ist erstmal mein Code der hibernate.cfg.xml-Datei:



<?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>


    <poperty name?"show_sql">true</poperty>

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

	</property>

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

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

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

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

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

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

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

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

    <property name="hibernate.hbm2ddl.auto">/property>

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

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

    <mapping resource="contact.hbm.xml" />

    </session-factory>

	</hibernate-configuration>

Diese Datei liegt bei mir in dem Ordner: "C:\Dokumente und Einstellungen\Administrator\Workspaces\MyEclipse 7.0\firsthibernateexample", was ja der .class-Path sein dürfte.

Eine Hibernate.properties-Datei habe ich leider gar nicht. Wie muss diese denn aussehen und in welchen Ordner müsste ich die packen??

Vielen Dank schon einmal.

MfG

Buergy

Geschrieben

Versuche es mal nur mit einer dialect Anweisung. Du hattest zu viel da drin die sich gegenseitig überschrieben haben.


<?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>

		<!-- Driver class -->

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


		<!-- Connection -->

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


		<!-- Benutzerdaten -->

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

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


		<!-- MySQL Dialect -->

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

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


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


		<!-- update database if necessary -->

		<property name="hibernate.hbm2ddl.auto">update</property>


		<!-- show SQLStaetement on console -->

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


		<mapping resource="contact.hbm.xml" />

	</session-factory>

</hibernate-configuration>


Geschrieben

Danke nochmals für die Hilfe Schiller256!! :)

Ich habe meinen Code nochmal geändert, aber leider tritt immer noch dasselbe Problem bei mir auf:


log4j:WARN Please initialize the log4j system properly.

Exception in thread "main" org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

	at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)

	at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)

	at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)

	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)

	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)

	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)

	at blablablapackage.TestExample.main(TestExample.java:23)

Die überarbeitete Version des XML-Codes sieht nun genauso aus, wie bei Dir Schiller, aber leider erscheint immernoch der selbe Fehler. Ich gebe auch nochmal den Code meiner InitFactory an:


package blablablahibernate;


import javax.naming.InitialContext;

import org.apache.log4j.Logger;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.cfg.Environment;


public class InitSessionFactory {

	private static org.hibernate.SessionFactory sessionFactory;

	private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

	private static final Configuration cfg = new Configuration();


	private InitSessionFactory(){

	}

	public static SessionFactory getInstance(){

		if(sessionFactory ==  null){

			initSessionFactory();

		}

		return sessionFactory;

	}

	public Session openSession(){

		return sessionFactory.getCurrentSession();

	}

	public Session getCurrentSession(){

		return sessionFactory.getCurrentSession();

	}

	private static synchronized void initSessionFactory(){

		Logger log = Logger.getLogger(InitSessionFactory.class);


		if(sessionFactory == null){

			try{

				cfg.configure(CONFIG_FILE_LOCATION);

				String sessionFactoryIndiName = cfg.getProperty(Environment.SESSION_FACTORY_NAME);

				if(sessionFactoryIndiName != null){

					cfg.buildSessionFactory();

					log.debug("get a indi session factory");

					sessionFactory = (SessionFactory) (new InitialContext()).lookup(sessionFactoryIndiName);

					}else{

						log.debug("classig factory");

						sessionFactory = cfg.buildSessionFactory();

					}	

				}catch(Exception e){

					System.err.println("%%%% Error Creating HibernateSessionFactory %%%%");

					e.printStackTrace();

					throw new HibernateException("Could not initialzie the Hibernate configuration");

					}

				}

			}


	public static void close(){

		if(sessionFactory != null){

			sessionFactory.close();

			sessionFactory = null;

		}

	}

}


und meiner HibernateSessionFactory:


package blablablapackage;


import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.cfg.Configuration;


/**

 * Configures and provides access to Hibernate sessions, tied to the

 * current thread of execution.  Follows the Thread Local Session

 * pattern, see {@link http://hibernate.org/42.html }.

 */

public class HibernateSessionFactory {


    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

    private  static Configuration configuration = new Configuration();    

    private static org.hibernate.SessionFactory sessionFactory;

    private static String configFile = CONFIG_FILE_LOCATION;


	static {

    	try {

			configuration.configure(configFile);

			sessionFactory = configuration.buildSessionFactory();

		} catch (Exception e) {

			System.err

					.println("%%%% Error Creating SessionFactory %%%%");

			e.printStackTrace();

		}

    }

    private HibernateSessionFactory() {

    }


	/**

     * Returns the ThreadLocal Session instance.  Lazy initialize

     * the <code>SessionFactory</code> if needed.

     *

     *  @return Session

     *  @throws HibernateException

     */

    public static Session getSession() throws HibernateException {

        Session session = (Session) threadLocal.get();


		if (session == null || !session.isOpen()) {

			if (sessionFactory == null) {

				rebuildSessionFactory();

			}

			session = (sessionFactory != null) ? sessionFactory.openSession()

					: null;

			threadLocal.set(session);

		}


        return session;

    }


	/**

     *  Rebuild hibernate session factory

     *

     */

	public static void rebuildSessionFactory() {

		try {

			configuration.configure(configFile);

			sessionFactory = configuration.buildSessionFactory();

		} catch (Exception e) {

			System.err.println("%%%% Error Creating SessionFactory %%%%");

			e.printStackTrace();

		}

	}


	/**

     *  Close the single hibernate session instance.

     *

     *  @throws HibernateException

     */

    public static void closeSession() throws HibernateException {

        Session session = (Session) threadLocal.get();

        threadLocal.set(null);


        if (session != null) {

            session.close();

        }

    }


	/**

     *  return session factory

     *

     */

	public static org.hibernate.SessionFactory getSessionFactory() {

		return sessionFactory;

	}


	/**

     *  return session factory

     *

     *	session factory will be rebuilded in the next call

     */

	public static void setConfigFile(String configFile) {

		HibernateSessionFactory.configFile = configFile;

		sessionFactory = null;

	}


	/**

     *  return hibernate configuration

     *

     */

	public static Configuration getConfiguration() {

		return configuration;

	}


}

und meiner TestExample an:

package blablablapackage;


import java.util.Iterator;

import java.util.List;


import org.apache.log4j.Logger;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.Transaction;


import blablablahibernate.InitSessionFactory;


public class TestExample {

	private static Logger log = Logger.getLogger(TestExample.class);

	public static void main(String[] args) {

		Honey countryHoney = new Honey();

		Honey forestHoney = new Honey();


		Session session = null;

		org.hibernate.cfg.Configuration cfg = new org.hibernate.cfg.Configuration().configure("/hibernate.cfg.xml");

		SessionFactory sessionFactory = cfg.buildSessionFactory();



		try{

			session = sessionFactory.openSession();

			System.out.println("Inserting Record");


			forestHoney.setName("forest honey");

			forestHoney.setTaste("very hot and chili sweet");



			countryHoney.setName("country honey");

			countryHoney.setTaste("barbecue and the hottest on world");


			createHoney(forestHoney);

			createHoney(countryHoney);

			session.save(forestHoney);

			session.save(countryHoney);

		}catch(Exception e){

			System.out.println(e.getMessage());

		}finally{

			session.flush();

			session.close();

		}




		// our instances have a primary key now


		log.debug(forestHoney);

		log.debug(countryHoney);


		listHoney();

		deleteHoney(forestHoney);

		listHoney();	

	}


	private static void listHoney(){

		Transaction tx = null;

		Session session = InitSessionFactory.getInstance().getCurrentSession();


		try{

			tx = session.beginTransaction();

			List honey = session.createQuery("select h  from Honey as h").list();


			for(Iterator iter = honey.iterator();iter.hasNext(){

				Honey element = (Honey) iter.next();

				log.debug(element);

			}

			tx.commit();

		}catch(HibernateException e){

			e.printStackTrace();

			if(tx != null && tx.isActive())

					tx.rollback();

		}

	}

	private static void deleteHoney(Honey honey){

		Transaction tx = null;

		Session session = InitSessionFactory.getInstance().getCurrentSession();


		try{

			tx = session.beginTransaction();

			session.delete(honey);

			tx.commit();

		}catch(HibernateException e){

			e.printStackTrace();

			if(tx != null && tx.isActive())

				tx.rollback();

		}

	}



	private static void createHoney(Honey honey){

		Transaction tx = null;

		Session session = InitSessionFactory.getInstance().getCurrentSession();


		try{

			tx = session.beginTransaction();

			session.save(honey);

			tx.commit();

		}catch(HibernateException e){

			e.printStackTrace();

			if(tx != null && tx.isActive())

				tx.rollback();

		}

		session.close();

	}

}

[/code]

Ist es überhaupt notwendig, dass ich zwei SessionFactorys erstelle. Oder kann der Fehler sogar dort liegen!? bzw. sind die zwei Klassen vielleicht die Verwirrung und damit auch die Ursache des Problems??

Oder liegt der Fehler vielleicht sogar in meinem TestExample??

Ich würde mich sehr freuen, wenn Du Dich dem Problem nochmal annimmst, Schiller256. Aber auch schon anderen Personen sind gute Ideen für diese Problem gerne gesehen. :)

Vielen Dank schon einmal.

Ciaoi

Buergy

Geschrieben

Nach welchem Tutorial arbeitest du und für welche Hibernate Version ist es gedacht?

Du brauchst definitiv keine zwei unterschiedlich implementierte SessionFactories in deinem Beispiel.

Deine Testklasse sieht auch sehr merkwürdig aus denn in der Methode createHoney speicherst du ja bereits deine Daten wieso machst du das dann nochmal in der main Methode?

Sehr zu Empfehlen ist diese Seite Getting Started und das dort verlinkete Tutorial Chapter1.Introduction to Hibernate. Auch nicht schlecht ist das dort erwähnte 2 Kapitel aus dem Buch Manning: Java Persistence with Hibernate.

Geschrieben

Also ich habe mir meine Sachen aus diesen beiden Tutorials zusammengeschustert:

1.1 Erstes Hibernate-Beispiel: Auszug aus Kapitel 1 Einführung in Hibernate aus dem Buch Hibernate

http://www.laliluna.de/download/first-hibernate-example-tutorialen. pdf

Aus dem laliluna-Tutorial hatte ich auch die Idee, dass ich zwei InitSessionFactorys, in zwei verschiedenen Packageserstellen soll. Bei mir sieht das ganze dann so aus in dem PackageExplorer:

Ich habe im Anhang mal die Anzeige meines Package-Explorers in Aufteilung auf 3 Bildern angehängt. Vielleicht siehst Du da ja schon einen Fehler.

Nun werde ich mal schauen, ob mir Deine vorgeschlagenen Tutorials weiterhelfen können. Ich hoffe, dass ich das bald hinbekomme. Zudem werde ich mal versuchen meine InitSessionFactory in das selbe Package zu packen, in der auch die HibernateSessionFactory enthalten ist. Vielleicht schaffe ich es ja auch bei Dateien zusammenzuschreiben!? :rolleyes:

Wäre schön, wenn Du Dich nochmal meldest, solltest Du einen Fehler bei meinen Sachen noch einen Fehler melden.

Ciaoi

Buergy

post-56921-14430448171705_thumb.jpg

post-56921-14430448172445_thumb.jpg

post-56921-14430448173393_thumb.jpg

Geschrieben

Servus,

also ich habe mir den Code von Dir jetzt nicht komplett durchgelesen, aber bist Du Dir sicher, dass Deine Hibernate Konfiguration im Wurzelverzeichnis liegt (Unter Windows evtl. C:\, unter Linux /)? Dort zeigst Du nämlich mit der Angabe "/hibernate.cfg.xml" hin.

Mein Tipp: Wenn Du nach Tutorials arbeitest, verwende nur eines und mach das durch. Wenn Du verstanden hast, was Du tust, kannst Du das Beispiel abändern und durch Sachen aus anderen Quellen erweitern. So stocherst Du im Nebel, schraubst hier und dort mal rum und wenn Du Glück hast, läuft irgendwann mal was. Aber verstanden hast Du es dann nocht nicht.

Peter

Geschrieben

Das erste was ich sehe ist das bei dir zwei Unterschiedliche hibernate.cfg.xml in deinem Projekt rum fliegen. Das ist gar nicht gut denn beide liegen im classpath und können auch gelesen werden. Und die, die direkt im Projekt root liegt schein fehlerhaft zu sein.

Ob du die SessionFactory Implementierungen in einem package oder in zwanzig weitere legst ist egal. Du brauchst nur eine Implementierung. Das ist aber kein Hibernate Problem sonder das ist Java Grundlage. Was mir auch noch auffällt ist das du in deinem Projekt classpath oft die Jars doppelt drin hast wenn sich die Versionen unterscheiden kann das recht schnell seltsame Seiteneffekte mit sich ziehen.

Ich habe so langsam das Gefühl als wären das deine ersten Gehversuche in Java. Wenn dem so ist dann vergiss das Thema Hibernate mal ganz schnell wieder. Denn dann solltest du dich erstmal mit den Java Grundlagen auseinander setzen und auch mal einen DB Zugriff zu Fuß implementieren.

Geschrieben

So, ich habe mir nun ein anderes Tutorial gesucht und stehe kurz vor dem Abschluss der dortigen Einpflege in mein MySQL-Datenbank. Leider habe ich jetzt aber noch einen Fehler, der nicht in irgendwelchem Code von mir auftritt.

Hier ertsmal der Fehler:

java.lang.NoClassDefFoundError: org/codehaus/aspectwerkz/hook/ClassLoaderPreProcessor

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$100(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)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Exception in thread "main"

Wisst Ihr vielleicht, was das zu bedeuten hat?? bzw. wie ich den Fehler beheben kann.

Bei der Abarbeitung des neuen Skripts, welcher übrigens um einiges einfacher und ausführlicher für Einsteiger ist, habe ich sehr sorgfältig gearbeitet. Hier dann mal zu meinen Codes:

Die HibernateSessionFactory:



package uk.co.planetjava.hibernate.bookstore;


import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;


public class HibernateSessionFactory {



    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";


    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();


    private  static Configuration configuration = new Configuration();


    private static final SessionFactory sessionFactory;


    private static String configFile = CONFIG_FILE_LOCATION;


	static {

    	try {

			configuration.configure(configFile);

			sessionFactory = configuration.buildSessionFactory();

		} catch (Exception e) {

			System.err.println("%%%% Error Creating SessionFactory %%%%");

			throw new ExceptionInInitializerError(e);

		}

    }


    public static Session getHibernateSession() throws HibernateException{

    	 return sessionFactory.openSession();

    }

}


Die Book-Klasse für meine Bücher in der Datenbank:


package uk.co.planetjava.hibernate.bookstore;


public class Book {


	private Integer id;

	private String title;

	private String author;

	private String price;


	public Book(){

	}

	public Integer getId(){

		return id;

	}

	public void setId(){

		this.id = id;

	}

	public String getTitle(){

		return title;

	}

	public void setTitle(String title){

		this.title = title;

	}

	public String getAuthor(){

		return author;

	}

	public void setAuthor(String author){

		this.author = author;

	}

	public String getPrice(){

		return price;

	}

	public void setPrice(String price)

		this.price = price;

	}

}


und meine Main-Klasse durch die ich die Sachen in MySQL einpflegen will:


package uk.co.planetjava.hibernate.bookstore;


import org.hibernate.Session;


public class Main {

	public static void main(String[] args){

		System.out.println("---------------------- Starting Hibernate");

		Session session = HibernateSessionFactory.getHibernateSession();

		System.out.println("---------------------- Hibernate gets started");


		System.out.println("-------------------- Create Book");


		Book book = new Book();

		book.setTitle("Java");

		book.setAuthor("John Hunt");

		book.setPrice("3,00 €");


		System.out.println("Save the new Book");

		session.save(book);


		System.out.println("Close Down Hibernate");

		session.close();

		HibernateSessionFactory.sessionFactory.close();


	}

}


Vielen Dank schon einmal für die Hilfe bisher. Ich hoffe, ihr könnt mir auch bei diesem Fehler weiterhelfen. Denn nun kann es ja zur Übertragung der Daten zu MySQL nicht mehr soweit sein!?

Ich hoffe auf eine baldige Antwort von Euch. ;)

Ciaoi

Buergy

Geschrieben

java.lang.NoClassDefFoundError: org/codehaus/aspectwerkz/hook/ClassLoaderPreProcessor

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$100(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)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Exception in thread "main"

Den obrigen Fehler konnte ich nun beheben. Dafür hab ich jetzt aber leider einen neuen Fehler der mir geworfen wird:



java.lang.NoClassDefFoundError: org/codehaus/aspectwerkz/hook/ClassLoaderPreProcessor

	at java.lang.ClassLoader.defineClass1(Native Method)

	at java.lang.ClassLoader.defineClass(Unknown Source)

	at java.security.SecureClassLoader.defineClass(Unknown Source)

	at java.net.URLClassLoader.defineClass(Unknown Source)

	at java.net.URLClassLoader.access$100(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)

	at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Exception in thread "main" 

Wisst Ihr, wie ich bei diesem Fehler nun weiter komme?? Das wäre echt super.... heute abend bin ich nämlich echt am verzweifeln.... :confused:

Würde mich sehr freuen, wenn Ihr eine Lösung findet....

Vielen Dank.

Ciaoi

Buergy

Geschrieben

Servus,

der zweite Fehler ist doch genau wie der erste, oder?

Dir fehlen scheinbar die AspectWerkz Klassen für Aspektorientierte Programmierung. Steht in Deinem Tutorial nichts über die Bibliotheken, die Du im Classpath haben solltest? Die AspectWerkz Seite ist übrigens aspectwerkz.codehaus.org (naja, nicht so überraschend, bei dem Packagenamen. :)

Peter

Geschrieben

Servus,

der zweite Fehler ist doch genau wie der erste, oder?

Nein, leider nicht... :(

Das mit den AspectWerkz-Libraries hat super geklappt. Danach fehlten auf Mal noch mehr Bibliotheken, die ich nun auch eingefügt habe. Diese Bibliotheken wurden in dem Tutorial wirklich nicht angegeben. Habe übrigens nach diesem Tutorial hier gearbeitet:

Hibernate Object Relational Mapping ? The Register

Nun hänge ich erneut bei einem Fehler:

java.lang.NoClassDefFoundError: net/sf/cglib/transform/hook/AsmClassLoaderPreProcessor

So wie ich das verstehe, ist dies wieder eine Klasse die dem Programm fehlt, oder??

Ich hangel mich dann mal weiter....

Geschrieben

Zu dieser Klasse bzw. dem genannten Fehler finde ich bisher leider keine Hilfe.

Um was für einen Fehler handelt es sich denn hier, wenn der Compiler sagt:

"



Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jdi/connect/IllegalConnectorArgumentsException


at net.sf.cglib.transform.hook.AsmClassLoaderPreProcessor.main(AsmClassLoaderPreProcessor.java:105)


???

Geschrieben

Mein Tutorial hat mir diese Libs zum adden angezeigt:


	asm.jar

	cglib-2.1.jar

	commons-collections-2.1.1..jar

	commons-logging-1.0.4.jar

	dom4j-1.6.jar

	ehcache-1.1.jar

	hibernate3.jar

	jdbc2_0-stdext.jar

	jta.jar

	log4j-1.2.9.jar

	xerces-2.6.2.jar

	xml-apis.jar

Bisher eingebunden habe ich diese:


	aspectwerkz-2.0.jar

	aspectwerkz-core-2.0.jar

	aspectwerkz-extensions-2.0.jar

	aspectwerkz-jdk5-2.0.jar

	aspectwerkz-0.10.RC2.jar

	mysql-connector-java-5.0.3-bin-g.jar

	asm.jar

	asm-attrs.jar

	cglib.2.1.3.jar

	commons-collections-2.1.1.jar

	commons-logging-1.0.4.jar

	dom4j-1.6.1.jar

	ehcache-1.1.jar

	hibernate3.jar

	jta.jar

	log4j-1.2.11.jar

	xerces-2.6.2.jar

	xml-apis.jar

	mysql-connector-java-5.1.7-bin.jar

	jdbc2_0-stdext.jar

	hibernate-validator.jar

	hibernate-annotations.jar


Das scheint aber ja noch immer nicht zu reichen. :) Man beachte ja den letzten Fehler den ich angegeben hab und noch nicht rausbekommen hab. Anscheinend brauche ich wohl doch noch einige .jar-Files bis das Ding läuft..... :confused:

Geschrieben

So, ich melde mich jetzt doch nochmal zum Stand meiner Ausarbeitung. Mein Professor gewährt mir ("Gott sei Dank") nun doch noch eine Bearbeitungszeit meines Projekts bis Montag, den 19.01.2009.

Hab mir jetzt auch "nochmal, ich weiß" :) ein Tutorial angeschaut mit welchem ich zum ersten Mal richtig weit gekommen bin.

Der einzige Fehler der Jetzt noch auftritt, ist der:

java.lang.NoClassDefFoundError: uk/co/planetjava/hibernate/bookstore/Main

Exception in thread "main"

Dies verstehe ich nicht ganz, denn ich habe meine main-Methode direkt in der Main-Klasse, so heißt diese bei mir jetzt, deklariert. Liegt der Fehler eventuell daran, dass ich zuviele bzw. überflüssige .jar-Files importiert habe??

Ich hab dieses mal nämlich darauf geachtet, dass ich ein Hibernate-Projekt starte, war bisher nicht so (weil zu dumm), und da hat er mir schon sämtliche Bibliotheken mit eingefügt. Das gut daran ist, dass er in den Klassen alle importierten Sachen gefunden hat. Nur leider besteht halt jetzt der Fehler mit der main-Class.

Ich hoffe, einer von Euch hat wieder einen guten Vorschlag. :confused:

Bye

Buergy

Geschrieben

Ja, ich habe einen Vorschlag. Besorg Dir ein Buch mit Java Grundlagen und beschäftige Dich mit Themen Classpath, starten der VM, Packages und so weiter. Mach das Semester noch mal und dann mit richtigem Hintergrundwissen.

Die Klasse, die Du anmäkelst, hört sich stark nach einer Klasse aus dem Tutorial an (Package).

So wirst Du vermutlich so lange rumstöpseln, bis Du etwas hast, das irgendwie läuft, aber verstanden hast Du es dann noch nicht. Und das ist das Ziel des ganzen - und nicht, das Semester hinter Dich zu bringen.

Peter

Geschrieben

Der komplette/ relevante Stacktrace wäre extrem hilfreich gewesen. Denn so kann man nicht wirklich was erkennen.

Kann mich aber nur anschließen mach das Semester nochmal und liest dir die Grundlagen an. Denn du nutz hier eclipse mit einer menge an Plugins die du überhaupt nicht verstehst. Es werden dir classpath Einträge erzeugt und du weißt überhaupt nicht wofür du sie brauchst. Deshalb kommt es auch zu solchen Fehlern.

Geschrieben

So, unabhängig davon, dass ich den Kurs in einem der nächsten Semester auf jeden Fall nochmal werde, habe ich es nun doch geschafft ein Mapping hinzubekommen. Habe mich daher nochmal an einer neuen Aufgabe versucht. Hier erhalte ich nun leider einen Fehler von MySQL den ich nicht verstehe:

Unknown column 'Stoff_ID' in 'field list' ....

Hier dann mal mein Code für die beschriebenen Tabellen:



SHOW WARNINGS;

CREATE  TABLE IF NOT EXISTS `Stoff` (

  `Stoff_ID`  NOT NULL ,

  `Stoff_Bezeichnung` VARCHAR(45) NULL ,

  PRIMARY KEY (`Stoff_ID`) )

ENGINE = InnoDB




SHOW WARNINGS;

CREATE  TABLE IF NOT EXISTS `Knoten` (

  `Knoten_ID` INT NOT NULL ,

  `Stoff_Stoff_ID`  NOT NULL ,

  `Knotentyp_Knoten_ID` INT UNSIGNED NULL ,

  `x_Koordinate` INT NULL ,

  `y_Koordinate` INT NULL ,

  `z_Koordinate` INT NULL ,

  PRIMARY KEY (`Knoten_ID`, `Stoff_Stoff_ID`) ,

  CONSTRAINT `fk_Knoten_Knotentyp`

    FOREIGN KEY (`Knotentyp_Knoten_ID` )

    REFERENCES `mydb`.`Knotentyp` (`Knoten_ID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION,

  CONSTRAINT `fk_Knoten_Stoff`

    FOREIGN KEY (`Stoff_Stoff_ID` )

    REFERENCES `mydb`.`Stoff` (`Stoff_ID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION);


CREATE INDEX `fk_Knoten_Knotentyp` ON `Knoten` (`Knotentyp_Knoten_ID` ASC) ;


CREATE INDEX `fk_Knoten_Stoff` ON `Knoten` (`Stoff_Stoff_ID` ASC) ;


Aus meiner bisherigen Suche im Internet zu diesem Problem konnte ich entnehmen, dass der Fehler etwas damit zu tun hat, dass meine Tabelle Knoten beim Einfügen die Stoff_ID noch nicht kennt ,obwohl ich schon eine Stoff_ID eingefügt habe. Den neuen Knoten versuche ich so anzulegen:


		Knoten k = new Knoten();

		k.setKnotenId(3);

		k.setStoff_ID(22);

		k.setxKoordinate(24);

		k.setyKoordinate(34);

		k.setzKoordinate(25);


und dies ist die dazu geschriebene Mapping-Datei:


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

<!DOCTYPE hibernate-mapping PUBLIC '-//Hibernate/Hibernate Mapping DTD 3.0//EN'

							'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>


<hibernate-mapping>


<class name="uk.co.planetjava.hibernate.bookstore.Knoten" table="KNOTEN">

 	<id name="id" column="Knoten_ID">

		<generator class="increment"/>

		</id>

		<property name="Stoff_ID"/>

		<property name="xKoordinate"/>

		<property name="yKoordinate"/>

		<property name="zKoordinate"/>

	</class>

</hibernate-mapping>


Ich würde mich sehr freuen, wenn Ihr mir hierbei wieder weiterhelfen könnt.

Ciaoi

Buergy

Geschrieben

Ich habe jetzt nur den ersten Codekasten gelesen, weil ich dort einen Fehler gefunden habe. Deine Tabelle kann nicht angelegt werden, weil Du bei STOFF_ID keinen Datentyp angibst. Du solltest hier aber schon beim Anlegen der Tabelle einen Fehler erhalten.

Peter

  • 2 Wochen später...
Geschrieben

Oh lieber Gott, keine Ahnung von Java aber dann mit Hibernate anfange?? Das ist ja echt gut. Zumal Hibernate wohl das Framework ist was ich mit am wenigsten nem Einsteiger in die Hand geben würde :)

Lass doch Hibernate für's erste die Tabellen erzeugen. Scheinbar kennst du dich mit (My)sql auch nicht aus, da wäre das vernünfitg um mal ein halbwegs lauffähiges System zu haben. Wenn du dann die Java-Anwendung aus Tutorials zusammenkopiert hast kannst du dich ja nach MySQL-Tutorials umschauen und dort weiter zusammenkopieren.

Ach ja, deine ganzen NoClassDefFoundErrors kommen wohl daher dass du irgendwelche unnötigen Libs aufgenommen hast welche wiederum andere unnötige libs benötigen.

Schau dir einfach mal in der Hibernate-Distribution die readme unter "lib" an. Dort stehen auch welche Bibliotheken optional und welche pflicht sind.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...