hinzufügen von sqlite-DB zu ausführbaren JAR-Datei
Ich bin mit JAVA (mit eclipse juno) und versuchen Sie zum erstellen einer ausführbaren JAR-Datei, die gehören sqlite DB-Datei.
Ich habe versucht, Verbindung zu der DB durch diese Zeile:
DriverManager.getConnection("jdbc:sqlite:"+DataController.class.getResource("test.sqlite").getPath())
Den DataController ist eine Klasse, die befindet, wo die sqlite liegt.
und ich bekomme eine Fehlermeldung:
java.sql.SQLException: invalid database address
Nicht kann mir jemand helfen und geben Schritt für Schritt Anweisungen, wie Sie sqlite-DB, die innerhalb einer ausführbaren JAR-Datei?
- Dieser Fehler tritt auf, wenn die Datenbank-URL ist ungültig. Versuchen Sie drucken die Zeichenfolge, die Sie geben, um
getConnection()
- Ich druckte es bereits und es ist der genaue Pfad zur sqlite-DB.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offenbar sqlite-jdbc öffnen können Ressourcen auf seine eigene. Laut diesem thread https://groups.google.com/forum/?fromgroups=#!Thema/xerial/Oayzj5nrJGk hinzufügen :Ressource auf den Weg. So versuchen Sie Folgendes:
oder hängt von der version von sqlite
Einbauen Paket mit einem '/' getrennt, der Pfad zu dem Paket diese Datei ist im.
Bewusst sein, dass es tatsächlich kopieren Sie die Datei in einem tmp-Verzeichnis.-
jdbc:sqlite::resource:test.sqlite
oderjdbc:sqlite::resource:test.db
je nach Ihrer version von SQLite. Ich verbrachte viel zu viel Zeit mit dem Versuch, dies herauszufinden. dieresource
neben der URI was hat es funktioniert, denn ohne Sie, wird der Fahrer davon ausgegangen, dass die db im selben Verzeichnis wie die Datei, die Verbindung zu es.Den
::resource
Weg richtig ist. Und diese Erklärungen werden helfen, wenn Sie mit::resource
aber bekomme immer noch Fehler wieresource database.db not found: java.net.MalformedURLException: no protocol: database.db
wie verdana.Häufigsten anwsers sind:
DriverManager.getConnection("jdbc:sqlite::resource:path/to/database.db")
Jedoch die
path/to/database.db
muss der genaue Pfad(den Weg in die Real-Datei-System aber nicht in der Jar -), um Ihre jar-Datei.Empfehle ich die Nutzung
getClass().getResource()
:HINWEIS:die
/path/to/db/in/the/jar/file
Teil beginnt mit/
Ich bin mir nicht sicher, ob sich das geändert hat in den letzten JDBC-Versionen, aber nach hantieren mit es für etwa eine Stunde und immer verschiedene Ausnahmen (MalformedURLException und "Datenbank wurde geschlossen"), habe ich festgestellt, dass Folgendes bei mir funktioniert:
Den :Datei: Teil scheint zu fehlen aus anderen Antworten und ich konnte es nicht, zu arbeiten, ohne es.
Beachten Sie auch, dass die
ist der absolute Pfad, ausgehend vom root der .jar-Datei, statt einem normalen resource-root.
arbeitete für mich. Meine Datenbank(notes_app.db) wurde in der Wurzel der erzeugten jar-Datei.
Meine notes_app.db ist in der Wurzel des erzeugten jar. Ich bin auf die Entwicklung mit maven und notepadd++