# JDBC Fehler beim laden der nativen Bibliothek db2jcct2



## deathwish (30. Jul 2011)

guten Abend,

wenn ich in meinem Programm den JDBC Treiber laden möchte, bekomme ich folgenden Fehler


```
com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][4.9.78] Beim Laden der nativen Bibliothek db2jcct2, java.lang.UnsatisfiedLinkError: C:\Program Files\IBM\SQLLIB\BIN\db2jcct2.dll: Can't find dependent libraries ist ein Fehler aufgetreten:  ERRORCODE=-4472, SQLSTATE=null
```

Eine Recherche mit Google ergab, das der Fehler häufig mit Glassfish zu tun. Ich benutze aber weder diesen noch einen anderen Applikationsserver. 

hat jemand eine Idee ?


----------



## turtle (31. Jul 2011)

Der Fehler besagt, dass die Bibliothek db2jcct2.dll (oder db2jcct2.so) oder einer davon abhängigen Bibliotheken nicht geladen werden konnten.

Du kannst versuchen, das Problem zu lösen, indem Du die db2jcct2.dll in das Verzeichnis kopierst aus dem Du das Programm startest, oder beim Aufruf den Pfad mitgibst: java -Djava.library.path=<Pfad zur DLL>

Es gibt aber auch einen Type 4 JDBC Treiber der db2jcc.jar.oder so ähnlic heisst. Vielleicht probierst Du ja den auch mal aus.


----------



## deathwish (11. Aug 2011)

der Fehler erscheint, obwohl ich Bibliotheken db2jcc_license_cu und db2jcc4  eingebunden hatte. 
Wenn ich db2jcct2.dll in das Verzeichnis kopiere, bekomme ich trotzdem den Fehler


----------



## AFlieger (11. Aug 2011)

Ich vermute jetzt einfach mal, dass das Leerzeichen im Pfad das Problem verursachen könnte.


----------



## deathwish (11. Aug 2011)

meinst du den Pfad beim Aufruf über die Kommandozeile ? 
ich starte die Programme ausschließlich über Eclipse. 
Auf meinem Laptop funktioniert die Datenbank Anbindung problemlos. Der einzige Unterschied zwischen PC und Laptop ist, das PC 64 Bit und Laptop 32Bit Windows haben


----------



## AFlieger (11. Aug 2011)

Ich meinte diesen: C:\Program Files\IBM\SQLLIB\BIN\db2jcct2.dll


----------



## maki (11. Aug 2011)

deathwish hat gesagt.:


> Auf meinem Laptop funktioniert die Datenbank Anbindung problemlos. Der einzige Unterschied zwischen PC und Laptop ist, das PC 64 Bit und Laptop 32Bit Windows haben


Wenn der  java.library.path richtig gesetzt ist, muss die DLL natürlich noch zur JVM passen, eine 64 Bit JVM braucht eine 64 Bit DLL, eine 32 Bit JVM eine 32 Bit DLL.


----------



## deathwish (11. Aug 2011)

ah ok, ich hab Windows 7 64 Bit, DB2 64 Bit aber Java 32 Bit. 
 Heisst das jetzt, ich muss Java 64 Bit installieren oder würde es reichen, die dll Datei der 32 Bit Version zu kopieren ?


----------



## maki (11. Aug 2011)

Was war denn an meinem letzten post unklar?

Eigentlich ganz einfach: 
64 Bit JVM -> 64 Bit DLL
32 Bit JVM -> 32 Bit DLL


----------



## deathwish (13. Aug 2011)

Ok, ich habe jetzt die 32 Bit DLL eingefuegt, aber jetzt bekomme ich einen neuen Fehler:


```
java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at com.ibm.db2.jcc.t4.z.a(z.java:101)
	at com.ibm.db2.jcc.t4.z.a(z.java:149)
	at com.ibm.db2.jcc.uw.UWReply.b(UWReply.java:62)
	at com.ibm.db2.jcc.t4.z.c(z.java:260)
	at com.ibm.db2.jcc.t4.z.c(z.java:371)
	at com.ibm.db2.jcc.t4.z.v(z.java:1146)
	at com.ibm.db2.jcc.t4.cb.c(cb.java:53)
	at com.ibm.db2.jcc.t4.q.c(q.java:44)
	at com.ibm.db2.jcc.t4.rb.j(rb.java:147)
	at com.ibm.db2.jcc.am.en.kb(en.java:2039)
	at com.ibm.db2.jcc.am.en.a(en.java:3007)
	at com.ibm.db2.jcc.am.en.a(en.java:666)
	at com.ibm.db2.jcc.am.en.executeQuery(en.java:650)
	at dbkom.benutzer.DBBenutzer.pruefeName(DBBenutzer.java:130)
	at dbkom.DBManagerBenutzer.pruefeBenutzername(DBManagerBenutzer.java:131)
	at schnittstelle.Server.<init>(Server.java:395)
	at server.Serverstart.main(Serverstart.java:43)
```


----------

