# JDBC will nicht - java.lang.noClassDefException (o.ä.)



## puetZ (15. Mai 2004)

hallo,

ich versuche nun seit 2 tagen, java-zugriff zu mysql zu bekommen.
ich habe
- xxxxx.jar runtergeladen,
- readme gelesen
- xxxxx.jar ins java-verzeichnis gelegt
- classpath in autoexec bat eingetragen
- set classpath = ....xxxxxxx.jar versucht
- mysql-anleitung gelesen
 aber es will nicht, ich habe meine klasse übersetzt, bekomme beim ausführen aber immer exception(s.o)
langsam verzweifle ich, sicher ist es ewas ganz triviales.

für hilfe bin ich sehr dankbar.

puetZ


----------



## L-ectron-X (15. Mai 2004)

In welches Verzeichnis hast Du Deine xxxxx.jar gelegt?
Sie sollte im /jre/lib/ext liegen.

java.lang.NoClassDefError wird ausgelöst, wenn die VM eine Klasse zu Laufzeit nicht finden/laden konnte.


----------



## puetZ (15. Mai 2004)

meine
mysql-connector-java-3.0.11-stable-bin.jar

liegt im verzeichnis 
C:\j2sdk1.4.2_03\jre\lib\ext

puetZ


----------



## puetZ (15. Mai 2004)

das com und das org - verzeichnis habe ich ins verzeichnis meiner anwendung kopiert
ich möchte doch erstmal nur die verbindung haben, die abfragen sollten dann kein problem mehr sein

hier mein quelltext:

```
// ShowSqlTable.java

import java.io.*;
import java.sql.*;

public class ShowSqlTable
{
  // Extend String to length of 14 characters
  private static final String extendStringTo14( String s )
  {
    final String sFillStrWithWantLen = "              ";
    final int    iWantLen = sFillStrWithWantLen.length();
    if( s.length() < iWantLen )
      s = (s + sFillStrWithWantLen).substring( 0, iWantLen );
    return s;
  }

  // main()
  public static void main( String[] argv )
  {
    String sDbDriver=null, sDbUrl=null, sTable=null, sUsr="", sPwd="";
    if( 3 <= argv.length )
    {
      sDbDriver = argv[0];
      sDbUrl    = argv[1];
      sTable    = argv[2];
      if( 4 <= argv.length )  sUsr = argv[3];
      if( 5 <= argv.length )  sPwd = argv[4];
    }
    else
    {
      try {
        BufferedReader in = new BufferedReader(
                            new InputStreamReader( System.in ) );
        System.out.println( "Name des Datenbanktreibers eingeben (z.B. org.gjt.mm.mysql.Driver):" );
        sDbDriver = in.readLine();
        System.out.println( "Url der Databank eingeben (z.B. jdbc:mysql://localhost:3306/MyTest):" );
        sDbUrl = in.readLine();
        System.out.println( "Name der Tabelle eingeben:" );
        sTable = in.readLine();
      } catch( IOException ex ) {
        System.out.println( ex );
      }
    }
    if( null != sDbDriver && 0 < sDbDriver.length() &&
        null != sDbUrl    && 0 < sDbUrl.length()    &&
        null != sTable    && 0 < sTable.length()    )
    {
      try {
        // Select fitting database driver and connect:
        Class.forName( sDbDriver );
        Connection cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
        Statement  st = cn.createStatement();
        ResultSet  rs = st.executeQuery( "select * from " + sTable );
        ResultSetMetaData rsmd = rs.getMetaData();
        int i, n = rsmd.getColumnCount();
        for( i=0; i<n; i++ )
          System.out.print( "+---------------" );
        System.out.println( "+" );
        for( i=1; i<=n; i++ )    // Attention: first column with 1 instead of 0
          System.out.print( "| " + extendStringTo14( rsmd.getColumnName( i ) ) );
        System.out.println( "|" );
        for( i=0; i<n; i++ )
          System.out.print( "+---------------" );
        System.out.println( "+" );
        while( rs.next() )
        {
          for( i=1; i<=n; i++ )  // Attention: first column with 1 instead of 0
            System.out.print( "| " + extendStringTo14( rs.getString( i ) ) );
          System.out.println( "|" );
        }
        for( i=0; i<n; i++ )
          System.out.print( "+---------------" );
        System.out.println( "+" );
        rs.close();
        st.close();
        cn.close();
      } catch( ClassNotFoundException ex ) {
        System.out.println( ex );
      } catch( SQLException ex ) {
        System.out.println( ex );
      }
    }
  }
}
```


----------



## puetZ (15. Mai 2004)

ich habe es inzwischen mit dem quellcode aus diesem forum versucht, immer noch das gleiche problem:
die genaue fehlermeldung: java.lang.NoClassDefFoundError

infos dazu aus der API:
_"extends LinkageError
Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the classcould be found. 
The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found."_ 

Scheint also nichts mit dem treiber zu tun zu haben. mehr verstehe ich aber nicht. welche klassen-definition ist nicht mehr da? wo ist das problem?

der neue quellcode:


```
// t1.java

//import java.io.*;
import java.net.*; 
import java.sql.*;

public class t1
{

  // main()
  public static void main( String[] argv )
  {
    Connection conn = null;
    String dbHost = "localhost";
    String dbPort = "3306";
    String dbName = "meineDatenbank";
    String user = "User1";
    String passwd = "meinPW";

    //Treiber laden
    try 
    { 
      Class.forName("org.gjt.mm.mysql.Driver"); 
    } 
    catch(ClassNotFoundException cnfe) 
    { 
      System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage()); 
    }

    //Verbindung zur Datenbank herstellen
    try 
    { 
      conn = DriverManager.getConnection("jdbc:mysql://" +dbHost +":" + dbPort + "/" + dbName, user, passwd); 
    } 
    catch(SQLException sqle) 
    { 
      System.out.println("Verbindung ist fehlgeschlagen: " + sqle.getMessage()); 
    }

    //Datenbankoperationen

    //Verbindung trennen
    if (conn != null) 
    { 
      try 
      { 
        conn.close(); 
      } 
      catch(SQLException sqle) 
      { 
        System.out.print(sqle.getMessage()); 
      } 
    }


  }//main

}//class
```

wer weiss weiter?

puetZ


----------



## puetZ (16. Mai 2004)

das problem hat sich geklärt, lag nicht am jdbc-treiber.

sorry und trotzdem danke

puetZ


----------



## marumbo Joe (16. Mai 2004)

Hi puetZ,

ch habe auch dieses Problem..
Wie hast du es denn gelöst bzw an was lag es ???
thx
marumbo


----------



## Gast (10. Aug 2004)

Hallo Leute,

ich hab dasselbe Problem. Wie krieg ich diesen blöden Fehler weg???

Thanks für Eure Hilfe


----------

