PostgreSQL jar-file läd db-treiber nicht

gordonsky

Mitglied
Hallo
ich hoffe ihr könnt mir weiter helfen.
ich habe hier ein programm geschrieben welches auf einer postgres datenbank zugreift. geschrieben habe ich das programm mit eclipse. dort funktioniert auch alles.
jedoch dann wenn ich mein porgramm exportiere tut sich garnix...
Java:
public void loadJdbcDriver() {
		String driver = "org.postgresql.Driver";
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			Toolkit.getDefaultToolkit().beep();
			JOptionPane.showMessageDialog(null,"Fehler: Treiber konnte nicht geladen werden\r\nProgramm wird beendet","Error", 0);
			System.exit(0);
		}
		System.out.println("driver loaded");
	}
und diese methode rufe ich im konstruktor auf...

meine frage nun... wie exportiere ich mein programm so das der treiber mit in die entstehende jardatei gepackt wird und funktioniert?
ich hab gelesen das man das ganze dann mit classpath macht aber wie geht das genau? :bahnhof:
 
Das mit dem Classpath stimmt schon. Außerhalb von Eclipse musst du Java sagen, wo es weitere Klassen suchen soll, bzw. welche JARs mit durchsucht werden sollen. Hier u.a. den Postgres-Treiber.

Du hast mehrere Möglichkeiten:

1. Verwendete JARs mit in dein erstelltes JAR packen (via Eclipse oder Ant). Damit hast du erstmal keine Classpath-Probleme, dafür aber ein großes festes JAR und kannst die einzelnen externen JARs nicht so einfach austauschen.

2. Starten der eigenen JAR mit Classpath, z.B.
Code:
java -cp lib/prostgre.jar;lib/log4j.jar -jar meineJar.jar mein.Main
. Kann man z.B. auch in Batchdateien auslagern

3. Im Manifest deiner JAR-Datei den Classpath schreiben (weitere Infos bietet Google)
 
oh man 🙁
ich glaub ich bin zu doof...

kann mir mal jemand eine genaue anleitung für ein frischling geben? ich probier und probier und es will nicht klappen
ich würde gern das ganze mit eclipse machen da es mir als das einfachste erscheint...
 
Hat KrokoDiehl richtig und schön beschrieben...

Ich würde an Deiner Stelle die Datei META-INF\MANIFEST.MF INNERHALB Deiner Jar-Datei anlegen bzw. anpassen:

Darin kannst Du die Main-Klasse festlegen
Code:
Main-Class: <Dein Klassenname>
und Du kannst den ClassPath festlegen
Code:
Class-Path: ./lib/postgre.jar
Dabei gehe ich davon aus, dass im Dateisystem neben der Jar-Datei selbst ein Ordner lib vorhanden ist, in dem die postgre.jar liegt.

Danach sollte die Applikation per Kommando
Code:
java -jar <DeineJarDatei.jar>
gestartet werden können oder per Doppelklick unter Windows.
 
juhu!!! es funktioniert!!!! :toll:
Danke!!!!!

nur mal so nebenbei noch...
ich starte mein programm mit hilfe einer bachdatei
Code:
start java -jar Datenbankprogramm.jar
dabei öffent sich aber immer die console... wie schaffe ich das das diese sich nicht mit öffenet sondern nur mein programm? 🙂

aber nochmal danke!!!!!
 
ich starte mein programm mit hilfe einer bachdatei
Code:
start java -jar Datenbankprogramm.jar
dabei öffent sich aber immer die console... wie schaffe ich das das diese sich nicht mit öffenet sondern nur mein programm?

Mit
Code:
javaw
anstatt
Code:
java
 

Zurück
Oben