Derby Datenbank bei Export zu JAR-Datei nicht möglich

damtre

Aktives Mitglied
Hallo,

ich habe eine Derby Datenbank die ich nutze um schreibend und auch lesend darauf zuzugreifen. In Eclipse funktioniert das soweit alles super. Die Derby.jar Datei befindet sich in meinen Projektordner.
Wenn ich mein Programm jetzt exportiere und eine JAR Datei erstelle und diese dann mit java -jar D:\MeinProgramm.jar ausführe kriege ich ne ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver, was wohl darauf zurückzuführen ist, dass die Derby.jar nicht gefunden werden kann.

Ich habe daraufhin die JAR-Datei mit Winrar geöffnet und festgestellt, dass die derby.jar gar nicht mit aus meinem Projekt exportiert wurde, obwohl es sich da befindet wo auch alle Sources sind.
Ich habe mit Winrar die derby.jar einfach manuell meinem JAR hinzugefügt, allerdings kommt dann auch wieder die o.g. Fehlermeldung.

Die .classpath Datei die in meinem JAR erzeugt worden ist sieht folgendermaßen aus:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="lib" path="src/derby.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
[/XML]

Nun frage ich mich, ob und wenn ja wie ich hier nun meine Derby Datenbank auch in einem exportierten JAR File zum laufen kriegen kann.

Danke schon mal.
 
N

nillehammer

Gast
Jar in Jars geht nicht. Entpacke entweder die class-Dateien des Derby-Jars (und aller evtl noch verwendeten 3rd-Party Libs) und packe alles zusammen in ein Jar (Stichwort Uber-Jar) oder such Dir einen geeigneten Ordner, in den Du die 3rd-Party-Jars legst und den Du beim Start dem Classpath hinzufügst. Dafür bietet sich folgende Ordnerstruktur an:
Code:
user.home/nameDeinesPrograms/
  deinJar.jar <-- Dein ausführbares Jar
  start.bat <-- Startscript für Windows
  start.sh  <-- Startscript für Unixe
  lib/        <-- Unterordner für externe jars
    derby.jar <-- Dein derby.jar
    ...
  data/ <-- Unterordner für Derby's Datenfiles
Die Startscripte müssten dann (neben Verzeichniswechsel etc.) folgende Zeile enthalten:
Code:
java -jar deinJar.jar -cp ./lib/*
 
Zuletzt bearbeitet von einem Moderator:

damtre

Aktives Mitglied
Oha. Ok das ist für mich nun alles absolutes Neuland....
Ich habe nun auch keine Vorstellung davon wie ich das Skripten muss usw. dass ich diese Jar einfach in Zukunft per Mail verschicken kann und das Programm lauffähig bleibt.
Ich möchte halt auch nicht, dass jeder User dieses JAR-File nur aus einem ganz bestimmten Pfad aus starten kann. Es soll einfach aufm Desktop oder wo auch immer liegen und lauffähig sein. :)

Zwecks deines Lösungsvorschlages, wäre es nett wenn du mir vielleicht ne Quelle nennen kannst, damit ich diesen Vorgang nachvollziehen kann. Oder vielleicht kannst du mir auch ne kurze Erläuterung geben wie ich was zu machen habe?!

Danke
 
N

nillehammer

Gast
Wenn Du Deine Daten persistent speichern willst, wirst Du Dich auf irgendein Verzeichnis für die Speicherung der Derby-Files festlegen müssen. Das Home-Verzeichnis des Nutzers (bei Windows: Eigene Dateien, Bei Unixen i.d.R.: /home/nutzername) bietet sich an, weil Du da fast 100% sicher Schreibrechte hast. Und da Du das schon musst, kannst Du auch gleich das Programm -wie von mir skizziert- in eine festelegte Ordnerstruktur ablegen.

Aber, wenn Du das absolut nicht willst, dann musst Du eben alle class-Files in ein einziges Jar legen. Ich habe aber mit der Exportfunktion von Eclipse dafür keine Möglichkeit gefunden. Insofern musst Du es entweder:
- Von Hand machen (mit einem Zip-Programm die externen Jars enpacken, alle Packages inkl. Deiner eigenen zusammenkopieren, alles zusammen in ein einziges Jar packen)
- Ein Eclipse Plugin suchen, das evtl. mehr kann als die Standard-Exportfunktion
- Ein Buildtool wie maven benutzen
 

Bile Demon

Bekanntes Mitglied
[...] Ich habe aber mit der Exportfunktion von Eclipse dafür keine Möglichkeit gefunden. Insofern musst Du es entweder:
- Von Hand machen (mit einem Zip-Programm die externen Jars enpacken, alle Packages inkl. Deiner eigenen zusammenkopieren, alles zusammen in ein einziges Jar packen) [...]

Möglicherweise bin ich jetzt auf dem falschen Dampfer, aber ich habe Projekte in Eclipse, die externe JARs einbinden. Wenn ich so ein Projekt mit der Export-Funktion als JAR auswerfe, dann erhalte ich ein einzelnes lauffähiges JAR-File.
Leider habe ich im Moment keine Möglichkeit nachzuschauen, was in dem JAR alles drin ist, aber die Vermutung liegt doch nahe, dass Eclipse in der Lage ist, externe JARs automatisch zu einem Komplett-JAR zusammenzufügen. Oder?
 
N

nillehammer

Gast
Bile Demon hat gesagt.:
Leider habe ich im Moment keine Möglichkeit nachzuschauen, was in dem JAR alles drin ist, aber die Vermutung liegt doch nahe, dass Eclipse in der Lage ist, externe JARs automatisch zu einem Komplett-JAR zusammenzufügen. Oder?
Ich habe die Möglichkeit nachzuschauen (einfach mit einem zip-Programm entpacken, wenn Du keins hast, bei Windows die Endung .zip an den Dateinamen) und habe es direkt vor meinem vorherigen Post ausprobiert (Rechte Maustaste auf Projekt -> Export -> Jar-File, dann den Wizard komplett durchgeklickt) und nicht hinbekommen. Bei mir waren immer nur meine eigenen class-Files drinnen, nicht die der Referenced-Libraries. Hat mich aber auch nicht gestört, weil ich eh ein Build-Tool für sowas benutze.

Wenn du weißt, wie es mit Eclipse richtig geht, dann schreib es. Der TO wird sich freuen.
 

Bile Demon

Bekanntes Mitglied
Ging mir eher darum, dass ich die entsprechenden Projekte und JARs nicht zur Hand habe. Erst heute Abend wieder.

Klar, ich kann dann gerne nachschauen, wie ich das genau gemacht habe.

Wenn man nach "eclipse export jar with libraries" im Netz sucht, findet man allerdings so einiges. Unter anderem das hier:

"When using jar-Export there should be an option
(o) Package required libraries into generated JAR
which does what you want."

Möglicherweise hängt es auch mit der Option "Export Runnable JAR" zusammen, wonach dann ein Manifest erstellt wird mit einer Launch Configuration?
 

damtre

Aktives Mitglied
Das wäre ne feine Sache, wenn du mal nachschauen würdest wie das geht.
Ich habe übrigens auch einfach einen Ordner lib angelegt und dort die derby.jar hinterlegt. Wenn ich jetzt eine JAR aus meinem Projekt mache, dann wird diese da auch nun inklusive dem lib-Verzeichnis aufgeführt.
Aber es kommt immer noch der Fehler mit der ClassNotFoundException, obwohl ich die Manifestdatei mit dem ClassPath-Pfad angepasst habe. Aber nichts half, egal wie ich den Pfad angepasst habe.

Hier mal meine Varianten die ich testete:
Class-Path: lib/derby.jar oder
Class-Path: /lib/derby.jar oder
Class-Path: ./lib/derby.jar oder
Class-Path: . /lib/derby.jar

Schon seltsam, dass es nicht einfach ne 1-3 Klick-Variante gibt mit der man das einrichtet! ;)
 

Bile Demon

Bekanntes Mitglied
Na dann hat sich die Frage bezüglich des Deployens ja erledigt.

Habe zur Sicherheit nochmal nachgesehen. Ich kann in Eclipse unter Export -> Runnable JAR File Export auswählen, und dort lässt sich ganz genau einstellen, was Eclipse mit den Required Libraries machen soll.

Funktioniert bei mir bisher einwandfrei. Bei mir packt er die Libs als JAR-Dateien in die JAR-Datei. Eclipse kann die Libs aber wahlweise auch entpacken oder separat als JARs beilegen.

Wieso du allerdings dennoch eine ClassNotFoundException bekommst, da bin ich überfragt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
D Embedded Derby Datenbank Datenbankprogrammierung 4
L Derby Datenbank speichert nicht Datenbankprogrammierung 9
H Derby/JavaDB Eine verschlüsselte Derby-Datenbank wieder entschlüsseln Datenbankprogrammierung 4
P Zugreifen auf Derby Datenbank mit java (ÜBERARBEITET) Datenbankprogrammierung 2
S Derby Datenbank "offline" und "online" Datenbankprogrammierung 5
T Zugriff auf Derby-Datenbank will einfach nicht klappen Datenbankprogrammierung 22
B Java Derby Datenbank mit CLOB & BLOB Datenbankprogrammierung 5
P derby datenbank Datenbankprogrammierung 2
B Cloudscape/Derby NetworkServer als JDBCRealm Datenbank Datenbankprogrammierung 2
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
F Derby Datenbankprogrammierung 5
T importierte Derby DB währen der Laufzeit einlesen Datenbankprogrammierung 2
L Derby/JavaFX Fehlermeldung Datenbankprogrammierung 3
R findet Derby.DB nicht !? Datenbankprogrammierung 5
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
J Derby/JavaDB Datenbankanbindung Eclipse und Derby Datenbankprogrammierung 7
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
T Datenbankfeld in Derby 255 Zeichen Datenbankprogrammierung 3
M Derby/JavaDB Derby SQL Insert mit AUTO_INCREMENT, welche ID wurde vergeben? Datenbankprogrammierung 6
C Derby auf Server Datenbankprogrammierung 6
R derby : in squirrel url zu db von tomcat Datenbankprogrammierung 4
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
H Probleme mit Unicodedarstellung in Derby DB Datenbankprogrammierung 1
S Dringend Netbeans Derby DB random() function Datenbankprogrammierung 6
M HSQLDB oder DERBY - warum SCRIPT Datei? Datenbankprogrammierung 0
B Derby/JavaDB Einrichten der Derby DB / JAVA DB Datenbankprogrammierung 2
A Eclipse + Derby + Delete Row Datenbankprogrammierung 3
reibi Derby/JavaDB Derby DB löschen Datenbankprogrammierung 5
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S Derby/JavaDB Derby zu MySQL Datenbankprogrammierung 6
G Derby/H2 Welches u. Wie installieren/verwenden? Datenbankprogrammierung 10
L Derby/JavaDB Derby macht Probleme Datenbankprogrammierung 4
zilti Derby/JavaDB EclipseLink und Derby: "Abschneidefehler" bei @Lob Datenbankprogrammierung 2
B Derby Databankabfrage liefert Ergebnisse nicht korrekt Datenbankprogrammierung 2
H Derby SQL-Abfragen in Datei abspeichern Datenbankprogrammierung 2
H Flat Files in Derby importieren Datenbankprogrammierung 3
reibi Derby/JavaDB Derby russty manager deaktivieren Datenbankprogrammierung 3
L Derby Dezimal-Spalte die Größe ändern Datenbankprogrammierung 2
D PostgreSQL vs Firebird vs Derby Datenbankprogrammierung 12
R Lokale Derby in einer JPA-Anwendung Datenbankprogrammierung 3
S Derby ein zweites mal als Read-only öffnen Datenbankprogrammierung 9
M Derby insert, ID auslesen Datenbankprogrammierung 3
J Derby Datenbankprogrammierung 7
L Apache Derby Management-Tool Datenbankprogrammierung 3
A JavaDB(Derby) als ODBC-Datenquelle eintragen Datenbankprogrammierung 4
T Derby und Foreign Keys Datenbankprogrammierung 4
I JAVADB (Derby) OneToMany Datenbankprogrammierung 2
M Gelöst: JavaDB - Derby Inhalt in Jar Datei speichern Datenbankprogrammierung 5
O Derby/JavaDB anwenden von Regular Expressions Datenbankprogrammierung 2
O Derby Performance Probleme? Datenbankprogrammierung 4
H Derby in Java 6 direkt integriert? Wie nutzt man das? Datenbankprogrammierung 3
Z derby abfrage von einem Timestamp Datenbankprogrammierung 2
GilbertGrape Allgemeines zu Derby Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G Derby Anleitung? Datenbankprogrammierung 1
H Migration von MySQL auf Derby Datenbankprogrammierung 2
vogella Java DB (Derby) Size Datenbankprogrammierung 12
J Derby Cursor Problem Datenbankprogrammierung 2
R Wie stabil ist Derby? Datenbankprogrammierung 2
D Installation von Apache Derby in Eclipse Datenbankprogrammierung 1
P DERBY vs HSQLDB (Vor- Nachteile) Datenbankprogrammierung 3
P Apache DERBY - Datanbank erstellen Datenbankprogrammierung 2
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben