JAR-Datei und Datenbank

Joerg74

Mitglied
Hallo,

ich habe in meinem Programm eine Verbindung zu einer SQLite-Datenbank. Der Zugriff und die Verbindung auf diese klappt aus der IDE (Intellij Communty Edition) problemlos. Sobald ich aber nun eine JAR-Datei erstelle, erfolgt keine Verbindung zur Datenbank. Die Datendabk liegt im gleichen Ordner wie das JAR-Archiv. Der Pfad zur Datenbank ist auch passend gesetzt.
Kann mir jemand sagen, was ich beim Ertsellen des JAR-Archives vergesse oder falsch mache ?
Ansonsten läuft das Prgramm aus dem JAR-Archiv problemlos.
 
a) Möglicher Fehler: Ist denn das jar von SQLite im Classpath, wenn Du Deine jar startest?
b) Und was für einen Fehler bekommst Du, enn Du das jar startest?
c) Wie @MoxxiManagarm schon sagte: Code wäre auch ganz nett.
 
Hier ist der Code:

Code:
import javax.swing.*;

import java.sql.*;


public class Database {

    public static void connect(Person person) {

        Connection conn = null;

        try {

            String url = "jdbc:sqlite:" + System.getProperty("user.dir") + "\\Database.db";


            DriverManager.registerDriver(new org.sqlite.JDBC());


            conn = DriverManager.getConnection(url);


            PreparedStatement prep = conn.prepareStatement("insert into Kontrolle values (?, ?);");


            prep.setString(1, person.getName());

            prep.setString(2, person.getSurname());

            prep.addBatch();


            conn.setAutoCommit(false);

            prep.executeBatch();

            conn.setAutoCommit(true);


        } catch (SQLException e) {

            JOptionPane.showMessageDialog(null,e.getMessage());

        } finally {

            try {

                if (conn != null) {

                    conn.close();

                }

            } catch (SQLException ex) {

                JOptionPane.showMessageDialog(null,ex.getMessage());

            }

        }

    }

}

Aber wie gesagt. In der IDE funktioniert es. Als JAR-Archiv nicht.
 
Was kommt für eine Exception? Ist der Treiber im Classpath drin? (org.sqllite.JDBC)? Wie wird der Treiber mit dem Jar verknüpft. Standardmäßig enthält das Jar externe Abhängigkeiten nicht, so dass man die beim start des Jar explizit mittels -cp pfad/zu/driver/jar angeben muss. Oder man baut das Jar, dass die Abhängigkeiten mit in das Jar gepackt werden (Fat-Jar)
 
Ich habe den Treiber mit eingebunden.

Anhang anzeigen 12992
Und genau da liegt das Problem. Die Bibliothek liegt da in deiner Entwicklungsumgebung rum. Aber im Jar File ist die nicht mit eingebunden, weil das dafür nicht gedacht ist.

Das heißt, du musst dein Programm so starten:

java -cp sqlite-jdbc-3.30.1.jar -jar dein.jar (Oder etwas anders, ich hab das schon ewig nicht mehr so gemacht).

Oder du schaust, ob es so wie du das Jar baust eine Option gibt, dass er die External Librarieres entspackt und mit reinpackt.
 
Leider habe hab ich nichts dergleichen bei Intellij Idea Community Edition gefunden. Ich habe jetzt einfach zu eclipse gewechselt. Hier kann ich alle erforderlichen Libs und sonstiges mit einbinden. Damit funktioniert die JAR-Datei mit dem Datenbankzugriff nun.
Danke an alle für die Antworten.
 

Neue Themen


Zurück
Oben