• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

SUSE: JAVA-Classpath zu JDBC-Treiber bewirkt Fehler

Schludi

Registered User
Hallo!

Ich hatte unter RedHat mal das Problem, das ich immer die Fehlermeldung "Exception in Thread Main" bekam, wenn ich die Java-VM mit irgendeine CLASS-Datei starten wollte.

Hatte mit
java Klassenname
aufgerufen. Seit der Installation von Suse und der vorinstallierten JavaVM, hatte ich dieses Problem nicht mehr. Nun möchte ich von einer Konsolen-Application, die auf dem Server laufen soll, eine lokale JDBC-Verbindung zum MySQL-Server aufbauen, habe eine ganz einfache Anwendung geschrieben, die mit dem MySQL-Connector-Treiber (welchen man bei MySQL.org herunterladen kann - die Datei heisst mysql-connector-java-3.1.7-bin.jar) die Verbindung aufbauen soll.
Dazu hatte ich in /etc/profile.local eine neue Zeile "export CLASSPATH=/usr/lib/SunJava1.4../jdbc/" eingetragen. Danach bekam ich bei JEDER Application (sogar HelloWorld ohne irgendwelche JDBC-Befehle) die Fehlermeldung "Exception in thread "main"".

Daraufhin hatte ich den Pfad wieder herausgenommen, die Datei in mein Java-Benutzer-Verzeichnis kopiert (/home/java), mich als user java angemeldet und mit javac die Datei kompiliert. Ich bekam keine Fehlemeldungen.

Habe versucht mit

Code:
java -classpath ".;~/mysql-connector-java-3.1.7-bin.jar" Datenbank
java -classpath .;~/mysql-connector-java-3.1.7-bin.jar Datenbank
java -classpath ~/mysql-connector-java-3.1.7-bin.jar Datenbank
java -classpath "~/mysql-connector-java-3.1.7-bin.jar" Datenbank
java -classpath "/home/java/mysql-connector-java-3.1.7-bin.jar" Datenbank
... usw

die CLASS-Datei mit der VM zu starten, hatte aber keinen Erfolg. Immer:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: Datenbank

Als ob ich entweder die Klasse nicht so wie die Datei genannt hätte, oder zum Beispiel die Main-Methode vergessen hätte. Hab ich den Parameter CLASS-PATH allerdings weggenommen bekam ich die Fehlermeldung meines CATCH-Blocks

Code:
java@vs148083:~> java Datenbank
JDBC-ODBC-Treiber nicht gefunden.
Fehler!

Wie bring ich meiner VM bei, das sie die MySQL-Connector-Datei nehmen soll?? (Ist immer noch die Vorinstallierte von SUSE)

Hier nochmal der Java-Code (dürfte nicht so wichtig sein):

Code:
import java.sql.*;

public class JDBCTest {
	public static void main (String args[])
	{
		try {
		  Class.forName("com.mysql.jdbc.Driver");
		}
		catch (ClassNotFoundException e) {
		   System.out.println         ("JDBC-ODBC-Treiber nicht gefunden.");
		}
		
		try
		{
		   Connection conn = DriverManager.getConnection ("jdbc:mysql://www.tabulaturen.de/tabulaturen", "root", "asdfjklö42");
		   Statement st = conn.createStatement();
		   ResultSet rs = st.executeQuery ("SELECT * FROM interpret");
			
		   while (rs.next()) 
		   {
			 System.out.print ("ID: " + rs.getInt ("ID") + "   ");
		   }
		   rs.close();
		   st.close();
		}
		catch (Exception e)
		{
			System.out.println("Fehler!");
			System.exit(0);
		}
		
	}
}
 
Hmm also ich habe als Benutzer "java" kein javac für die Kompilierung zur Verfügung. Also habe ich mit

Code:
javac Datenbank.java
ohne Fehlermeldung das nochmal kompiliert und den Classpath folgendermaßen angegeben (als Benutzer java):

Code:
java -classpath .:/home/java/mysql-connector-java-3.0.16-ga-bin.jar Datenbank

Und auf einmal geht es (gut habe den älteren Treiber noch runtergeladen - aber evtl. geht ja jetzt mit dem neuen auch....

Schon etwas seltsam
 
Back
Top