> Inhalt: Einführung in das Programmieren mit Java > Datenbank-Ladeprogramm mit Graphischer Benutzeroberfläche (Java_Intro_02) |
|
Letzte
Bearbeitung dieses Dokuments: |
Voraussetzungen für das Verständnis dieses Dokuments:Keine Vorkenntnisse notwendig; allerdings kann dieser Schritt nur ausgeführt werden, wenn die vorigen Schritte des Tutorials abgeschlossen wurden. |
Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:Arbeitszeit:
|
Dieses abschließende Dokument beschreibt, wie die Dateien mit Java-Zwischencode (mit Endung *.class) in eine einzelne Datei im Format 'Java-ARchive' (mit Endung *.JAR bzw. *.jar) 'gepackt' werden.
Im Unterschied zu der einfachen Methode, wie unter Tutorial: Hello World (Java_Intro_01) > In JAR-Datei packen beschrieben, wird hier die mit dem JBoss-IDE-Plugin angebotene Möglichkeit des 'Project archives' – mit weit umfangreicheren Konfigurationsmöglichkeiten – genutzt.
Abschließend wird beschrieben, wie das Java-Programm unter Linux und Windows (getestet mit Windows 98SE) aufgerufen wird.
Vorigerer
Schritt: Meldungen drucken
oder
SQL-Kommandos ausführen
Vorbedingungen
'Project
archives' anlegen
Dateien
mit Java-Klassen hinzufügen
JAR-Datei
neu erstellen
Test
* Ausführen
unter Linux
* Ausführen
unter Windows 98SE
Mögliche
Fehlerursachen
* Java
nicht installiert
* Tippfehler
* JAR-Dateien
nicht im angegebenen Verzeichnis
Weitere
Schritte und verwandte Dokumentation
Schritt
5: SQL-Kommandos ausführen
ausgeführt – und dessen Vorbedingungen auch.
Das
ist kein Tippfehler – der Schritt 6: Meldungen
drucken ist nicht notwendig um die Dateien mit den
vorkompilierten Java-Klassen in eine Java-Archiv-Datei packen und
die SQL-Kommandos aus der gewählten Datei ausführen zu
können.
Wenn das bearbeitete Project das Erste, für das JAR-Dateien erstellt werden sollen, im Eclipse-Workspace ist (so wie bei diesem Beispiell), muß zuerst die View für die 'Project archives' eröffnet werden. Das geschieht über die Auswahl Window > Show View > Other... . |
|
Im darauf hin erscheinenden Fenster (Show View) wird 'Project archives' ausgewählt. 'Project archives' ist innerhalb der Gruppe 'JBoss Tools' zu finden und wenn sie Auswahl nicht sichtbar ist, kann sie durch anklicken des kleinen Dreiecks links neben 'JBoss Tools' sichtbar gemacht werden. Anschließend wird die Schaltfläche [ OK ] angeklickt um einen neuen Bereich im unteren Bereich zu öffnen. |
|
Um das Archiv zum 'richtigen' Project zu erstellen, muß zuerst das Project ('Java_Intro_02' in diesem Beispiel) markiert werden. |
|
Durch Anklicken des neuen Bereiches mit der rechten Maustaste wird ein Kontext-Menu angezeigt. Mit der Auswahl von New Archive > JAR wird ein Fenster (New JAR) geöffnet mit dem Parameterisierungen für die zu erstellende Datei vorgenommen werden können. |
|
Die vorgegebenen Einstellungen werden beibehalten. Durch das Anklicken der Schaltfläche [ Finish ] wird die Datei erstellt. |
|
Die neu erstellte Datei ist jetzt im Bereich des 'Project archives' gelistet. |
|
Dateien
mit Java-Klassen hinzufügen
Die Java-Klassen inklusive der durch die Java-'package's definierten Verzeichnis-Struktur werden in das EJB aufgenommen. Für das Hinzufügen von Dateien (inklusive der Verzeichnis-Struktur) wird die Datei 'Java_Intro_02.jar' mit der rechten Maustaste angeklickt und aus dem Kontext-Menu New Fileset ausgewählt. |
|
Im folgenden Fenster wird durch Anklicken der Schaltfläche [ Workspace... ] ein eigenes Fenster geöffnet, in dem als Nächstes jenes Verzeichnis, in dem die Dateien mit den Java-Klassen – inlusive der Verzeichnis-Struktur für die Java-'package's – ausgewählt werden kann. |
|
Im
erscheinenden Auswahl-Fenster ('Folder Selection') wird wird zu
jenem Verzeichnis manövriert, in dem die Dateien mit den
Java-Klassen liegen. Die Verzeichnis-Struktur wird angezeigt bzw. verborgen, wenn das kleine Dreieck links neben einem Verzeichnis-Namen angeklickt wird. Die Auswahl wird durch Anklicken der Schaltfläche [ OK ] bestätigt und damit wird auch das Fenster geschlossen. |
|
Im Fenster für das 'New Fileset' werden dann die Filter-Kriterien für die Dateien, die in die JAR-Datei aufgenommen werden sollen, im Feld 'Includes' festgelegt: **/*.class. **/ bedeutet, daß alle Verzeichnisse in der Struktur auf Dateien mit einem passenden Namen durchsucht werden. *.class bedeutet, daß alle Dateien, deren Namen mit .class endet, in die JAR-Datei gepackt werden sollen. Nach Eingabe der Filter-Kriterien ist im Feld 'Preview' zu sehen, welche Dateien ausgewählt sind. Die Definition wird durch Anklicken der Schaltfläche [ Finish ] abgeschlossen und damit wird auch das Fenster geschlossen. |
|
Im Bereich des 'Project archives' ist dann sichtbar, welche Dateien für das packen in die JAR-Datei ausgewählt sind. Die Struktur für die JAR-Datei kann durch Anklicken des kleinen Dreiecks links neben den Datei- bzw. Verzeichnis-Namen angezeigt oder verborgen werden. |
|
JAR-Datei
neu erstellen
Bis
jetzt wurde nur festgelegt, welche Dateien in die JAR-Datei gepackt
werden.
In diesem kurzen Abschnitt wird beschrieben, wie die
JAR-Datei erstellt wird.
Dazu wird die Datei 'Java_Intro_02.jar' mit der rechten Maustaste angeklickt und aus dem Kontext-Menu Build Archive (Full) ausgewählt. Der Vorgang des 'Packens' dauert nur Bruchteile einer Sekunde und es wird keine Rückmeldung gegeben wenn der Vorgang beendet ist. |
|
Die erzeugte Datei ist in der Struktur des 'Project Explorer's zu sehen und wenn Sie ganz sicher gehen wollen, können Sie diese mit der rechten Maustaste anklicken und aus dem Kontext-Menu Properties auswählen. |
|
Im anschließend angezeigten Fenster ist das Datum der Datei-Erstellung zu sehen ('Last modified'). Damit kann überprüft werden, ob die Datei neu erstellt wurde. Durch Anklicken der Schaltfläche [ OK ] wird das Fenster geschlossen. |
|
Die
Verzeichnisse in den Beispielen sind von meiner
Verzeichnisstruktur.
Bedingt durch Ihren Benutzernamen und Ihrer
installierten Version von Java werden die Verzeichnisse
höchstwahrscheinlich von jenen Ihrer Installation abweichen.
Die
vermutlichen
Abweichungen
sind
in den Beispielen
kursiv
gedruckt.
Wenn
Sie das Programm nicht wie beschrieben ausführen können
folgen Sie bitte den Hinweisen unter
Mögliche
Fehlerursachen
.
Ausführen
unter Linux
Öffnen
Sie ein 'Terminal'-Fenster durch Auswahl von
Anwendungen
> Systemwerkzeuge > Terminal
.
Geben
sie im 'Terminal'-Fenster
folgenden
Befehl (in einer Abfolge)
ein:
java -cp /home/
developer01
/java_intro/Java_Intro_02/Java_Intro_02.jar:/usr/java/
jdk1.6.0_03
/lib/jdom.jar:/usr/java/
jdk1.6.0_03
/lib/
mysql-connector-java-5.1.5-bin
.jar
js_intro02.client.DB_Load
Dabei
haben die einzelnen Teile des Kommandos folgende Bedeutung:
java
Damit
wird das Java-Laufzeitsystem (Java-Runtime) aufgerufen, daß
die – in den *.jar-Dateien enthaltenen - vorkompilierten
*.class-Dateien auf dem jeweiligen Betriebssystem ausführt.
-cp
/home/......./Java_Intro_02.jar
:
/usr/java/......jar
:
/usr/java....
Mit
dem Parameter -cp
(ClassPath)
wird dem Java-Laufzeitsystem mitgeteilt, welche JAR-Dateien auf
Klassen, die nicht in der Standard-Implementation von Java enthalten
sind, durchsucht werden müssen.
Die Dateien werden in Linux
durch einen Doppelpunkt (:
)
getrennt.
Diese Liste enthält die Datei mit dem
Anwendungsprogramm und alle externen Bibliotheken, die das
Anwendungsprogramm benötigt.
....java-5.1.5-bin.jar
js_intro02.client.DB_Load
Der
letzte Teil des Befehls spezifiziert jene Klasse, die die Methode
main()
enthält;
d.h. jene Klasse die beim Start des Programms als erstes aufgerufen
werden soll und die dann die Steuerung der Anwendung übernimmt.
Als
Ergebnis erscheint das gewohnte Fenster:
Führen
Sie das Auswählen der Datei, das Laden der Datenbank und das
Drucken aus und überprüfen Sie, ob die Ergebnisse wie
erwartet sind.
Als
Anormalität ist nach dem Schließen des Fensters keine neue
Eingabe im 'Terminal'-Fenster möglich.
Grund
dafür ist, daß in Java das Schließen eines Fensters
nicht bedeutet, daß auch das Programm beendet wird.
Um das
Programm einfach zu halten, wurde auf die Implementierung jenes Codes
verzichtet, der auf das Ereignis 'WindowClosed' reagieren kann und
dann auch das Programm beendet.
Um
das Java-Programm zu beenden geben Sie im 'Terminal'-Fenster –
das aktiv sein muß – die Tastenkombination
Steuerung
+
c
ein.
Ausführen
unter Windows 98SE
Unter
Windows sind einige Unterschiede zu Linux zu beachten:
Auf
einem Windows-System ist vermutlich kein Datenbanksystem
installiert.
Auf ein MySQL-Datenbanksystem, daß unter
Linux installiert kann über das Netzwerk auch von einem
Computer mit Windows-Betriebssystem zugegriffen werden.
Dazu muß
in der Datei mit den Parametern für den Datenbankzugriff
('DB_Connection.xml'; siehe XML-Struktur
lesen
>
Verzeichnis
und Datei mit der XML-Struktur erstellen
)
die TCP/IP-Adresse 127.0.0.1 durch jene des Computers, auf dem
Datenbanksystem installiert ist, ersetzt werden.
Hier ein
Beispiel:<DataBaseName>
jdbc:mysql://
192.168.0.1
:3306/js_tutorial
</DataBaseName>
Die
Längenbeschränkung der Kommandozeile in Windows erlaubt
nicht, daß das komplette Kommando zum Aufruf des Programms
eingegeben werden kann.
Deswegen wird das Kommando in einer
'Batch'-Datei erfaßt und diese Datei dann ausgeführt.
Für
dieses Beispiel wird folgende Datei Struktur in Windows angenommen:
C:/Programme/Java_Tst/Apps
enthält
ein weiteres Unterverzeichnis mit
der JAR-Datei die in Eclipse
gepackt wurde,
der 'Batch'-Datei mit dem Kommando zum Starten des
Programms ('run.bat') und
den Dateien mit den SQL-Kommandos und
den Parametern für den Datenbankzugriff.
C:/Programme/Java_Tst/Ext_Jars
enthält
die JAR-Dateien der externen Bibliotheken; in unserem Fall jene für
das Bearbeiten der XML-Struktur ('jdom.jar') und jene mit den
Klassen für die Verbindung zum Datenbanksystem.
Die
Datei 'run.bat' wird editiert und folgendes Kommando
eingetragen:
java
-cp
c:\Programme\java_tst\Apps\JIntro02\Java_Intro_02.jar;c:\Programme\java_tst\ext_jar\jdom.jar;c:\Programme\java_tst\ext_jar\mysql-connector-java-5.1.5-bin.jar
js_intro02.client.DB_Load
Bitte
beachten Sie, daß das Kommando in einer Zeilge geschrieben sein
muß
;
möglicherweise wird es wegen zu geringer Fensterbreite in Ihrem
Web-Browser über mehrere Zeilen verteilt angezeigt.
Die
einzelnen Teile des Kommandos haben folgende Bedeutung:
java
Damit
wird das Java-Laufzeitsystem (Java-Runtime) aufgerufen, daß
die – in den *.jar-Dateien enthaltenen - vorkompilierten
*.class-Dateien auf dem jeweiligen Betriebssystem ausführt.
-cp
c:\Programme\.......\Java_Intro_02.jar
;
c:\Programme\......jar
;
c:\Programme\....
Mit
dem Parameter -cp
(ClassPath)
wird dem Java-Laufzeitsystem mitgeteilt, welche JAR-Dateien auf
Klassen, die nicht in der Standard-Implementation von Java enthalten
sind, durchsucht werden müssen.
Die Dateien werden in
Windows durch einen Doppelpunkt (;
)
getrennt.
Diese Liste enthält die Datei mit dem
Anwendungsprogramm und alle externen Bibliotheken, die das
Anwendungsprogramm benötigt.
....java-5.1.5-bin.jar
js_intro02.client.DB_Load
Der
letzte Teil des Befehls spezifiziert jene Klasse, die die Methode
main()
enthält;
d.h. jene Klasse die beim Start des Programms als erstes aufgerufen
werden soll und die dann die Steuerung der Anwendung übernimmt.
Als
Ergebnis erscheint das gewohnte Fenster:
Führen
Sie das Auswählen der Datei, das Laden der Datenbank und das
Drucken aus und überprüfen Sie, ob die Ergebnisse wie
erwartet sind.
Als
Anormalität ist nach dem Schließen des Fensters keine neue
Eingabe im 'Terminal'-Fenster möglich.
Grund
dafür ist, daß in Java das Schließen eines Fensters
nicht bedeutet, daß auch das Programm beendet wird.
Um das
Programm einfach zu halten, wurde auf die Implementierung jenes Codes
verzichtet, der auf das Ereignis 'WindowClosed' reagieren kann und
dann auch das Programm beendet.
Um
das Java-Programm zu beenden geben Sie im
'MS-DOS-Eingabeaufforderung'-Fenster – das aktiv sein muß
– die Tastenkombination
Steuerung
+
c
ein.
Wie
schon unter Test ausgeführt, wird das Kommando zum Aufrufen des
Programms höchstwahrscheinlich vom Beispiel in dieser
Dokumentation abweichen.
Bei Trainings habe ich die Erfahrung
gemacht, daß durch die Länge des Kommandos sich leicht
Denk- und Tipp-Fehler einschleichen können.
Generell
können drei mögliche Fehler unterschieden werden:
Java
nicht installiert
Dieser
Fehler kann auftreten wenn der Test auf einem anderen Computer
ausgeführt wird, als jenem auf dem Eclipse installiert
ist.
Entweder ist Java nicht installiert oder nicht so
eingerichtet, daß Java von jedem Verzeichnis aus gestartet
werden kann.
.
Das
erwartete Fenster erscheint nicht
Dabei
wird im 'Terminal'-Fenster die Fehlermeldung Exception
in thread "main" java.lang.NoClassDefFoundError:
js_intro02/client/DB_Load
ausgegeben.
In
diesem Fall liegt der Fehler mit hoher Wahrscheinlichkeit darin, daß
die *.jar-Datei mit der Anwendung
(-cp
/home/
developer01
/java_intro/Java_Intro_02/Java_Intro_02.jar
:/usr/....
)
oder
die startbare Klasse (...-bin
.jar
js_intro02.client.DB_Load
)
falsch angegeben wurde.
Das
erwartete Fenster erscheint – das Ausführen der
SQL-Kommandos funktioniert aber nicht
Dabei
können gar keine oder nicht leicht verständliche
Fehlermeldungen ausgegeben werden.
In diesem Fall liegt der
Fehler mit hoher Wahrscheinlichkeit darin, daß die
*.jar-Dateien mit den externen Bibliotheken nicht gefunden
werden.
Java prüft nicht sofort beim Start ob alle im
ClassPath angegebenen Dateien vorhanden sind sondern meldet erst
dann einen Fehler, wenn eine aufgerufene Klasse nicht in den im
ClassPath angegebenen Dateien gefunden wird.
Java
nicht installiert
Zur
Prüfung, ob Java korrekt installiert ist, rufen Sie ein
'Terminal'-Fenster (in Linux) oder die 'MS-DOS-Eingabeaufforderung'
(Windows) auf und geben Sie folgendes Kommando ein:
java
-fullversion
.
Als
Ergebnis wird die Version angezeigt; diese wird aber bei Ihrer
Installation höchstwarscheinlich eine andere sein:java
full version "1.6.0_03-b05"
.
Eine
Abbildung, wie Kommando und Antwort in Windows 98 aussehen:
Tippfehler
Prüfen
Sie, ob Groß- und Kleinschreibung exakt übereinstimmen.
Prüfen
Sie genau, ob Sie nicht einen Buchstaben vergessen haben oder
Buchstaben-Dreher passiert sind.
Die Namen sind nicht leicht zu
erfassen und diese Fehler kommen häufig vor.
JAR-Dateien
nicht im angegebenen Verzeichnis
Die
Verzeichnisse in den Beispielen sind von meiner Verzeichnisstruktur.
Prüfen
Sie zuerst mit dem 'Datei-Browser' Ihres Betriebssystems ob die
angegebenen Verzeichnisse und Dateien auch auf Ihrem Computer
vorhanden sind.
Weiters
können Sie auch die Definition der Verzeichnisse
in
Eclipse als Referenz heranziehen.
Wenn Sie das Programm in Eclipse
wie erwartet ausführen konnten dann sind die in Eclipse
definierten externen Bibliotheken in Ordnung.
*.jar-Datei
mit dem Anwendungsprogramm.
Wenn
Sie den Beispielen in diesem Tutorial gefolgt sind, dann können
sie unter
JAR-Datei
erstellen
nachsehen,
in welchem Verzeichnis die erstellte Datei liegt.
*.jar-Dateien
mit externen Bibliotheken.
Welche
Dateien in welchen Verzeichnissen innerhalb von Eclipse verwendet
werden, ist unter Schritt
4: Parameter für DB-Verbindung aus XML-Struktur lesen
>
Einbinden
der Dateien in den 'Java Build Path'
beschrieben.
Das
Tutorial für die Einführung in das Programmieren mit Java
ist jetzt beendet.
Die gelisteten Verweise stellen Empfehlungen
dar.
Dokument |
Inhalt |
In diesem Tutorial wird detailliert und mit Beispielen erklärt, wie Enterprise Java Beans (EJB) erstellt werden und nach welchem Schema Client-Programme für EJB aufgebaut sind. |
|
Dieses Tutorial enthält ein Beispiel in verschiedenen Schritten wie ein komplexeres Anwendungsprogramm mit Verwendung der JavaScout-Basisklassen erstellt wird. Ein
Fortfahren mit diesem Tutorial (ohne Durcharbeiten der Einführung
in das Programmieren von Enterprise Java Beans)
wird nur dann empfohhlen wenn Sie |