# oracle Anbindung geht im jar nicht



## Rilly (31. Okt 2007)

Hallo, hab da ein Problem und versteh nicht warum. 
Die Connection funktioniert nur, wenn ich mein Programm über eclipse starte, als exportiertes File findet er den Treiber anscheinend nicht. Allerdings habe ich meiner Meinung nach alles implementiert. 
nutze ojdbc14.jar und habe diese in den Build Path --> Libraries eingetragen.
Der Aufruf ist wie folgt:

```
Class.forName ("oracle.jdbc.driver.OracleDriver");
			verbindung = DriverManager.getConnection(datenbank, user, password);
```

Wenn ich mir im erstellen jar die .classpath anschaue, dann passt auch der eingetragene Pfad zum lib und dieser ist auch vorhanden.

Woran könnte es denn noch liegen?

Vielen Dank und Grüße
Rilly


----------



## ms (31. Okt 2007)

Rilly hat gesagt.:
			
		

> Wenn ich mir im erstellen jar die .classpath anschaue, dann passt auch der eingetragene Pfad zum lib und dieser ist auch vorhanden.


.classpath ist eclipse-spezifisch, hat in deinem jar-file nichts verloren und wird daher auch nicht verwendet.

ms


----------



## Guest (31. Okt 2007)

Du kannst die Classpath-Abhängigkeiten in die Manifest-Datei deiner Jar-Datei eintragen.


----------



## Rilly (31. Okt 2007)

hmm eine Eintragung im Manifest in dieser Form. Class-Path: libs/ojdbc14.jar
bringt die selbe Fehlermeldung. Was könnte es sonst sein?


----------



## ms (31. Okt 2007)

Beim Starten des Programms den CLASSPATH angeben.

java -cp /der/pfad/zur/lib.jar -jar deinProgramm.jar

ms


----------



## Rilly (31. Okt 2007)

das geht auch nicht, findet den Treiber trotzdem nicht, das Problem muss an etwas anderem liegen, gibts doch nicht!!!!!


----------



## babuschka (31. Okt 2007)

da hilft Fat Jar
is ein plugin für eclipse und bindet den treiber in die jar 100% ein
http://fjep.sourceforge.net/


----------



## Rilly (5. Nov 2007)

Hi, Fat Jar ist echt interessant, die Einbindung scheint auch zu funktionieren, aber die Connection hat immer noch Probleme, jetzt kommt folgende Fehlermeldung "Code segment has wrong length in class file oracle/jdbc/driver/OracleCallableStatement".
Beim starten der Klasse aus Eclipse heraus funktioniert alles wunderbar, verstehe ich irgendwie nicht.


----------



## abollm (5. Nov 2007)

Rilly hat gesagt.:
			
		

> hmm eine Eintragung im Manifest in dieser Form. Class-Path: libs/ojdbc14.jar
> bringt die selbe Fehlermeldung. Was könnte es sonst sein?



Versuche einmal Folgendes (Eintrag in deiner Manifest-Datei im Jar]:

```
Manifest-Version: 1.1
Main-Class: de.DeineHauptklasse
Created-By: 1.4.2_12 (Sun Microsystems Inc.)
Class-Path: classes12.jar
```

Wichtig: Lege die Datei "classes12.jar" in das Hauptverzeichnis (ojdbc14.jar nur in sehr speziellen Ausnahmefällen verwenden!), aus dem heraus du das Programm mit Java(w) aufrufst. Das klappt bei mir immer.
Falls du weitere Jar-Dateien benötigst, kannst du die obigem Class-Path nach jeweils einem Leerzeichen (nicht Komma, wie ursprünglich geschrieben) anfügen.

Ein typischer, immer wieder gern gemachter Fehler ist beispielsweise ein nicht ordnungsgemäßes Erzeugen der Jar-Datei.

Edit am 27.03.08


----------

