ClassNotFoundException bei verschiedenen MS SQL Treibern trotz Classpath-Eintrag

ebug

Mitglied
Hallo!

Ich habe folgendes Problem:

Ich bekomme meine Datenbankanbindung leider nicht hin, wir sind von einem Derby-Server auf einen MS SQL-Server umgezogen (Entscheidung von oben) und ich muss meine Apps dementsprechend anpassen. Leider bekomme ich im Debugging immer eine ClassNotFoundException in der Zeile in der ich den Treiber registrieren will.

Ich habe zuerst den Treiber von Sourceforge genommen (jtds-1.2.6.jar), da war mein Code wie folgt:

Java:
try
{
	Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
	Connection connection = DriverManager.getConnection("jdbc:jtds:sqlserver://123.456.78:1433/db", "user", "pwd");
	DatabaseConnection(connection);
}
...

Danach habe ich stattdessen den Microsoft-Treiber (sqljdbc4.jar) eingebunden:

Java:
try 
{
	Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
	Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://123.456.78:1433/db;user=sa;password=bla");
	DatabaseConnection(connection);
}
...

und dann nachdem ich gegoogled hab:

Java:
try 
{
	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	Connection connection = DriverManager.getConnection("jdbc:sqlserver://123.456.78:1433/db;user=sa;password=bla");
	DatabaseConnection(connection);
}
...

Ich habe auch die jars eingebunden, wenn ich die durchsehe finde ich die entsprechenden Klassen auch. Ich habe inzwischen auch alle möglichen Foren / Hilfeseiten durchforstet, hat alles nix geholfen, da geht es immer nur um den Unterschied zwischen den letzten beiden Codes (SQLS2000/2005).

Was mache ich denn falsch? Hoffe ihr habt eine Idee!

Danke und Gruß
ebug
 
S

SlaterB

Gast
ich habe gerade sqljdbc4.jar von
Download: Microsoft JDBC Driver 4.0 for SQL Server - Microsoft Download Center - Download Details
geladen, aus der 2.3 MB-Variante

damit gibts bei mir bei Java 1.5 zwar 'UnsupportedClassVersionError: Bad version number in .class file',
aber das wäre ja schon besser als ClassNotFoundException..,
wie bindest du die Jars ein, ist das geübt oder eher provisorisch? ist das Jar in der Auflistung des ClassPaths bei Ausführung,
siehe Programm unten? (ein neues sauberes Programm, gleich in neuem Projekt, ist sowieso gut,
wenn es da geht wäre das für sich gut und kann man immer noch versuchen den Fehler im alten Programm zu finden)

funktioniert zur Übung wiederum, ein altes Jar neu einzubinden (und zwar so dass erst eine Klasse nicht gefunden wird, dann aber durch genau ähnliche Aktion doch?)
im Zweifel ein eigenes Jar mit komplett neuer unbekannter Klasse erstellen, wird die gefunden, aber Treiber-Jars weiterhin nicht?
auf gleichen Ort auf der Festplatte usw. geachtet, nicht "Libararies x,y binde ich so ein, für Library z mache ich es mal ganz anders'

Konsole, IDE, .. ?

Java:
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        String path = System.getProperty("java.class.path");
        String[] parts = path.split(";");
        for (String part : parts)
        {
            System.out.println(part);
        }
        Class c = Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        System.out.println(c);

    }
}
 
Zuletzt bearbeitet von einem Moderator:

ebug

Mitglied
dein Codeschnipsel spuckt mir folgendes aus:

C:\workspace\Test\bin
C:\<ordnereineranderensoftware>\lib\sqljdbc4.jar
class com.microsoft.sqlserver.jdbc.SQLServerDriver

Die JARs binde ich für gewöhnlich wie folgt ein: rechtsklick auf Projekt -> Build Path -> Configure Build Path.. -> Libraries -> Add external JARs ... auswählen und bei Order and export auf select all. Bisher hatte ich damit auch keine Probleme.

Interessant ist, wenn ich in einer neuen Klasse folgenden Code ausführe:

Java:
public static void main(String[] args)
{    	
	try 
	{
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		Connection connection = DriverManager.getConnection("jdbc:sqlserver://123.4.5.67:1433;databaseName=testdb;user=sa;password=1234");
		DatabaseConnection(connection);
	} 
	catch (ClassNotFoundException e) {
			e.printStackTrace();
	} 
	catch (SQLException e) {
			e.printStackTrace();
	}    
}
    
public static void DatabaseConnection(Connection connection) throws SQLException
{
	Statement statement = connection.createStatement();
	ResultSet resultSet = statement.executeQuery("SELECT ID FROM TABELLE123");
	resultSet.next();
	System.out.println(resultSet.getInt(1));
}

Dann spuckt er mir die ID aus. Wenn ich das ganze allerdings Zeile für Zeile debugge sagt er mir bei Class.forName ClassNotFoundException
 
Zuletzt bearbeitet:
S

SlaterB

Gast
einem Debugger kann ich persönlich nichts abgewinnen, wer weiß schon was der für einen ClassPath benutzt oder sonstige beliebige Fehler einbaut,
klingt jetzt nicht besonders realistisch als Fehlerquelle, eine Erklärung müsste es wohl geben, kann ich nicht nennen

wenn das Programm aber im normalen Durchlauf funktioniert, dann ist das doch was,
mehr kann ich nicht beizutragen erhoffen

oder ist in einem anderen Projekt auch bei Normalablauf noch Sense?
 

turtle

Top Contributor
Dann lass die Zeile doch mal weg
Java:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Diese braucht man den meisten JDBC-Treibern nicht!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver Datenbankprogrammierung 4
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
C Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException Datenbankprogrammierung 4
L MySQL ClassNotFoundException bei JSP Datenbankprogrammierung 24
I MySQL MATLAB: Class.forName wirft ClassNotFoundException Datenbankprogrammierung 4
T ClassNotFoundException nur mit Web Application Datenbankprogrammierung 3
S java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 10
M ClassNotFoundException bei Class.forName(xx) Datenbankprogrammierung 6
zilti java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 3
G ClassNotFoundException Datenbankprogrammierung 3
D java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 5
M ClassNotFoundException bei com.mysql.jdbc.Drive Datenbankprogrammierung 4
A ClassNotFoundException beim Laden des Oracle-JDBC-Treibers Datenbankprogrammierung 10
G java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserv Datenbankprogrammierung 7
K Viele verschiedenen SQL Abfragen Datenbankprogrammierung 2
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
G ArrayList aus Verschiedenen klasse füllen Datenbankprogrammierung 5
H Oracle DBUnit/JUnit auf Oracle mit verschiedenen Schemata? Datenbankprogrammierung 8
R PreparedStatement mit verschiedenen Datenbanken Datenbankprogrammierung 2
Antoras Design-Frage: Datenzuordnung zu verschiedenen Accounts Datenbankprogrammierung 2
J Gesucht: Wörterbuch der verschiedenen SQL-Dialekte Datenbankprogrammierung 3
M Maximum aus verschiedenen Spalten Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben