Die Einsendeaufgaben zu den Kursen 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) sind freiwillig und dienen Ihnen als Richtschnur, wie gut Sie ein Thema verstanden haben. Wir empfehlen Ihnen aber dringend, diese Aufgaben zu bearbeiten, damit Sie vor unangenehmen Überraschungen in der Prüfung gewahrt sind.
Sie werden zwar keine vollständigen C-Programme schreiben müssen, jedoch ist ein gutes Verständnis der erlernten Skripte und Skriptsprachen unbedingt erforderlich. Kleinere syntaktische Ungenauigkeiten sind noch kein Beinbruch, aber Sie werden auch kleinere Programme schreiben müssen.
Die Einsendeaufgaben zu den Kursen 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) sind freiwillig und dienen Ihnen als Richtschnur, wie gut Sie ein Thema verstanden haben. Wir empfehlen Ihnen aber dringend, diese Aufgaben zu bearbeiten, damit Sie vor unangenehmen Überraschungen in der Prüfung gewahrt sind.
Um ANTLR dann benutzen zu können, müssen Sie es in Ihren Java Classpath einbinden.
Sie können den Classpath entweder durch Setzen einer Umgebungsvariable oder durch explizites Angeben beim Aufrufen des Java Compilers, bzw. der Java Virtual Machine spezifizieren.
Ich beschreibe zunächst das Setzen der Umgebungsvariable unter Windows, dann das setzen der Umgebungsvariable unter Linux und dann das explizite Angeben während des Aufrufs.
Setzen des Classpaths als Umgebungsvariable unter Windows:
Setzen des Classpaths als Umgebungsvariable unter Linux: Je nach verwendeter Linux-Distribution können Sie entweder mit
CLASSPATH=<Eintrag> export CLASSPATHoder mit
setenv CLASSPATH <Eintrag>die Umgebungsvariable setzen, wobei Sie statt <Eintrag> die Pfade Ihres Classpaths angeben müssen. Beachten Sie, dass das Trennzeichen zwischen zwei Classpath-Einträgen unter Linux ein Doppelpunkt (":") ist und nicht wie bei Windows ein Semikolon. Wenn Sie möchten, dass die Umgebungsvariable automatisch beim Start Ihres Linux-Systems gesetzt wird, müssen Sie das Setzen der Variable in eines Ihrer Startskripte schreiben (s. auch "Welche Startskripte führt mein Linux-System aus?").
Setzen des Classpaths als explizite Anweisung beim Start des Java Compilers, bzw. der Java Virtual Machine:
Es gibt sowohl unter Linux als auch unter Windows auch noch die Möglichkeit, den Classpath direkt beim Aufruf von Java anzugeben. Dazu schreiben Sie:
javac -classpath <Eintrag> <weitere Optionen>bzw.
java -cp <Eintrag> <weitere Optionen>Es gelten die gleichen Regeln wie oben: Unter Linux ist das Trennzeichen zwischen zwei Einträgen ein Doppelpunkt, unter Windows ein Semikolon.
Wenn Sie sich für die letzte Alternative entscheiden und beim Programmaufruf direkt angeben, welchen Wert Ihr Classpath hat, müssen Sie dies bei jedem Aufruf von Java erneut angeben.
Beispiele für gültige Classpath-Einträge:
Ein Standardfall ist, dass Sie nach dem Aufruf eines Java Programms Namens "Test" die Fehlermeldung bekommen "Exception in thread "main" java.lang.NoClassDefFoundError: Test", obwohl Sie sich im richtigen Verzeichnis befinden. Das liegt daran, dass Sie das aktuelle Verzeichnis zum Classpath hinzufügen müssen:
java -cp . TestWenn "Test" in einem Paket (package) definiert wurde, das "programm" heißt, dann müssen Sie Test aus dem Verzeichnis heraus starten, in dem das Paket "programm" liegt und Sie müssen dem Classpath sagen, wo sich das Paket befindet, der Aufruf ändert sich nur im Programmnamen, nicht aber im Classpath:
java -cp . programm.TestUnd wenn Sie nun die ANTLR-Bibliotheken hinzufügen möchten, sieht der Aufruf folgendermaßen aus:
(Windows:) java -cp c:\studium\antlr\antlr-2.7.5.jar;. Test
(Linux:) java -cp /home/studium/antlr/antlr-2.7.5.jar:. TestWobei Sie natürlich die Pfade Ihrer Verzeichnisorganisation entsprechend verändern müssen.
Bleibt noch eine Besonderheit unter CygWin. Wenn Sie Java unbedingt unter CygWin benutzen möchten (wovon ich aufgrund der folgenden Hässlichkeit abraten möchte; nehmen Sie lieber entweder Windows oder Linux), dann geht das auch, aber beim Classpath gibt es eine Besonderheit. Sie befinden Sich unter einem emulierten Linux-System, das heißt insbesondere, dass Pfade wie unter Windows eingegeben werden müssen (also mit Semikolon als Trennung zwischen zwei Einträgen), aber Linux interpretiert ein Semikolon als Trennung zwischen zwei Argumenten, daher funktioniert eigentlich nur ein Doppelpunkt. Wie kommen Sie aus dem Dilemma?
Folgendermaßen:
(CygWin:) java -cp /home/studium/antlr/antlr-2.7.5.jar\;. Test"Backslash-Semikolon" ist die Lösung. Damit sagen Sie CygWin, dass das folgende Semikolon als Trennungssymbol zwischen zwei Pfadeinträgen aufzufassen ist. Hässlich, aber es funktioniert.
$ cvs import -m "Import GNU Hello 1.3" \ hello GNU HELLO_1_3Der Backslash ("\") dient hier nur als Hinweis, dass diese Zeile als eine Zeile einzugeben ist. Er darf nicht mit abgetippt werden. Die korrekte Eingabe muss also lauten:
cvs import -m "Import GNU Hello 1.3" hello GNU HELLO_1_3dann sollte es funktionieren.
Unter der "Bash" (wie auch CygWin sie benutzt; bzw. standardmäßig benutzt), gibt es die Dateien ".bashrc", ".bash_profile", ".profile" und "boot.local". Diese Dateien müssen bei Ihnen nicht vorhanden sein, aber schauen Sie mal nach (mit "ls -la"). Wenn Sie sich nicht sicher sind, welche dieser Dateien beim Start Ihres Systems ausgeführt werden, dann editieren Sie jede dieser Dateien mit Ihrem bevorzugten Editor ("vi" oder "emacs" oder "xemacs" oder ...) und schreiben in die oberste Zeile "echo xxx" (ohne die Anführungszeichen), wobei "xxx" für den Namen der jeweiligen Datei steht. Beim Start des Systems bekommen Sie dann eine Liste der ausgeführten Dateien auf dem Bildschirm präsentiert.
Nun können Sie sich eine dieser Dateien aussuchen, um Umgebungsvariablen zu setzen.
Wir hoffen, Sie konnten mit dieser Erklärung zumindest einen Schritt weiterkommen. Ansonsten kontaktieren Sie uns gerne per Mail oder per Telefon.
startxwin.shDann dauert es ein paar Sekunden und ein neues Fenster wird aufgehen. In diesem können Sie nun DDD folgendermaßen starten:
ddd -display :0So können Sie ddd benutzen; allerdings wird es sehr (sehr sehr!) langsam sein.
(Sie können auch eine neuere Java 5 Version herunterladen, wenn Sie möchten).
Beachten Sie, dass Sie Java für Windows benötigen, wenn Sie unter CygWin arbeiten.
C:\CygWin\usr\share\java\libgcj-3.4.4.jar;C:\CygWin\usr\share\antlr-2.7.5\antlr.jar;.Aber damit sind die Probleme leider noch nicht gelöst. Um eine Java-Anwendung mit gcj compilieren zu können, müssen Sie immer die Hauptklasse (die mit der main-Methode) angeben. Aus dem Aufruf
javac L.java LTokenTypes.javawird zum Beispiel
gcj --main=LTokenTypes L.java LTokenTypes.javaDoch auch damit wird es wahrscheinlich noch nicht funktionieren. Auf der Webseite von antlr können Sie nur jar-Dateien herunterladen, die nicht kompatibel zu gcj sind. Damit Sie also antlr mit gcj benutzen können, müssen Sie es zunächst neu mit gcj compilieren. Ein (englisches) Kochrezept zum Neucompilieren von antlr unter gcj finden Sie hier.
Wahrscheinlich ist es aber einfacher, von gcj zu java und javac zu wechseln und sich eine java SDK herunterzuladen. Sie bekommen die Sun Java SDK 1.4.2 hier und die Sun Java SDK 5 hier.
FernUniversität in Hagen, Fakultät für Mathematik und Informatik, Lehrgebiet Elektronische Schaltungen, 58084 Hagen, Tel.: +49 2331 987-2823, E-Mail: Fritz.Heinrichmeyer@fernuni-hagen.de