# Probleme mit Kombination Java JApplet;MySQL;Webserver



## StaffStingray (18. Apr 2010)

Hallo Profis,

ich bin mehr oder weniger noch ein Frischling im Umgang mit Java packages usw.. 
Ich habe folgenden Fall.

IST Zustand: 

1. Webserver Xampp / installiert kann auf localhost angesprochen werden. "funktioniert einwandfrei" sämtliche daten können in dem Ordner /htdocs eingefügt werden. ("Zentraler freigabeordner").
Eine einfache java.class datei kann im Browser gestartet werden, wenn ich nun ein HTML file generiere
das so aussehen könnte :


```
<html>
<body>

<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT classid="clsid:E19F9331-3110-11d4-991C-005004D3B3DB"
WIDTH = "350" HEIGHT = "220"  codebase="http://java.sun.com/products/plugin/1.3.0_02/jinstall-130_02-win32.cab#Version=1,3,0,2">
<PARAM NAME = CODE VALUE = "NewJApplet.class" >

<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.3.0_02">
<PARAM NAME="scriptable" VALUE="false">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.3.0_02"  CODE = "NewApplet.class" WIDTH = "200" HEIGHT = "100"  scriptable=false pluginspage="http://java.sun.com/products/plugin/1.3.0_02/plugin-install.html"><NOEMBED>

</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>

<!--
<APPLET CODE = "NewApplet.class" WIDTH = "200" HEIGHT = "100">


</APPLET>
-->


<!--"END_CONVERTED_APPLET"-->
</body>
</html>
```


2. Script funktioniert in der IDE Netbeans. Vorgetestet sämtliche SQL Statements können abgesetzt werden. Das Java Applet ist aus Netbeans lauffähig, wenn man die benötigte Datei "mysql-connector-java-5.1.6-bin.jar" in das Package einbindet. Datenbank ist MySQL

Script in dem Package :

```
package jdbcmysql_connection;

//import java.io.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.* ;

public class NewJApplet extends java.applet.Applet implements ActionListener
  {

  String treiber=null, DbUrl=null ;
  Connection cn ;
  TextField tf;
  TextArea ta ;
  Button bu ;


  public void init()
     {  //***************************************************************
         //***************************************************************
    setLayout( null ) ;
      //*** "Name des Datenbanktreibers eingeben


    treiber = "com.mysql.jdbc.Driver";
    //*** "Url der Databank eingeben *********
    //*** Server : linux
    //*** Service-Nummer 3306
    DbUrl = "jdbc:mysql://127.0.0.1:3306/technikerarbeit?user=root" ;

    tf = new TextField() ;
    tf.setLocation( 5,35 ) ;
    tf.setSize( 350,20 ) ;
    tf.setText("Anfrage? ") ;
    add( tf ) ;

    ta = new TextArea() ;
    ta.setLocation( 5,65 ) ;
    ta.setSize( 350,300 ) ;
    ta.setText("Ergebnis ") ;
    add( ta ) ;

    bu = new Button("Frage starten") ;
    bu.setLocation( 5,5 ) ;
    bu.setSize( 95,20 ) ;
    bu.setBackground( Color.red ) ;
    bu.addActionListener( this ) ;
    add( bu ) ;

    String meldung = new String("Verbindungsaufbau\n\n" ) ;

    try {
         //*** Treiber laden ***********************************
         Class.forName( treiber ).newInstance();
          //*** Verbindung aufnehmen:    ************************
          //*** Der User möcht was wissen
         cn = DriverManager.getConnection(DbUrl);
         if( cn!= null ) meldung += "Verbindung steht!!\n" ;
        } catch( Exception ex ) {   meldung += ex.toString() ;  } ;
    ta.setText( meldung ) ;
    }


  public void actionPerformed( ActionEvent e )
     {  //*** Funktion des ActionListener **********************************
     if( e.getActionCommand()== "Frage starten" )
        {  //**** Funktion zeichnen **********************************
        String frage = tf.getText() ;
        if( cn != null )
          {
             String antwort = new String("  ---- Ergebnis von\n  ---- " ) ;
             antwort += frage ;
             try { //*** Anfrage  - Fehler abfangen **********************
                 Statement  st = cn.createStatement();
                 ResultSet  rs = st.executeQuery( frage );
                 ResultSetMetaData rsmd = rs.getMetaData();
                 int n, nmax = rsmd.getColumnCount();
                 while( rs.next() )
                    { //**** SchauMerMal  Primitive Ausgabe    **********
                    antwort += "\n" ;
                    for( n=1 ; n<=nmax ; n++ )
                       antwort += "  " + rs.getString( n )  ;
                    }
                 antwort += "\n  ----------------------- "  ;
                 rs.close();
                 st.close();
                 } catch( SQLException ex )
                         {  antwort += "\n  Fehler\n  " + ex.toString() ;   }
             ta.setText( antwort ) ;
            }
         else ta.setText("\n  Keine Verbindung zur Datenbank" ) ;
      }
  }
}
```

*So jetzt zu meinem Problem :*

Ich bin nicht in der Lage dieses oben genannte Script im Browser ohne Fehlermeldungen laufen zu lassen *(s.unten)*. Weil ich 

A: nicht weiß wie und was ich von diesem Package ablegen muss, dass die Pfade irgendwie stimmen. 
B: momentan keine Ahnung hab wie ich das File "mysql-connector-java-5.1.6-bin.jar" registrieren muss, damit der Webserver bescheid weis. Unter NetBans ist das ganz einfach, dort kann ich über 
Package; rechte Maustaste; Properties; Libaries ; das File einbinden. Aber extern bringt das mir nicht viel.


```
java.lang.NoClassDefFoundError: NewApplet (wrong name: jdbcmysql_connection/NewJApplet)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(Unknown Source)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Ausnahme: java.lang.NoClassDefFoundError: NewApplet (wrong name: jdbcmysql_connection/NewJApplet)
```

*Um eine Antwort wäre ich euch echt dankbar, weil ich schon fast verzweifle * ;(
Das ist bestimmt nicht so schwierig, jedoch bin Java neuling und tu mir im Umgang damit noch etwas schwer. Vielen dank schon mal im vorraus. Vielleicht findet sich ja jemand, der sich dem Problem annehmen könnte.

viele Grüße 

Staff Stingray


----------



## maki (18. Apr 2010)

Steht doch da:

```
java.lang.NoClassDefFoundError: NewApplet (wrong name: jdbcmysql_connection/NewJApplet)
```
Es gibt keine Klasse die NewApplet heisst


----------



## StaffStingray (18. Apr 2010)

Ok, ich sagte ja ich bin Anfänger in Java 

Ich hatte den falschen Pfad angegeben.
Nun hab ich eine neue Fehlermeldung :


```
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
```

ich hab eine Jar Datei wo diesen Treiber beinhaltet. 
Aber wie registrier ich diesen ????


----------



## StaffStingray (18. Apr 2010)

Problem gelößt !!!!

Vorbereitung am Client 

Zunächst ist ein jdbc-Trieber für die MySql-Datenbank nötig. 
Diesen Treiber erhält man z.B. unter  MySQL Cluster 7.1 
Nach dem Entpacken des ZIP-Files sollten  entweder 
die Verzeichnisse 
   com/mysql/jdbc/..etc und 
   org/gjt/mm/..etc                       ->>>> beide Ordner nach htdocs kopieren !!! Wichtig, wegen dem Zugriff !!!
dort sein, wo die Klassen der Programme liegen 
und
   mysql-connector-j-2.0.14-bin.jar 
sollte in jdk/jre/lib/ext/  kopiert werden. 


der Code für die index.html


```
<html>
<body>
<applet code="NewJApplet.class" ARCHIVE = "mysql-connector-java-5.1.12-bin.jar" width="500" height="700">
</applet>
</body>
</html>
```


----------

