Folgende Beispiel-Programme finden sich in diesem Verzeichnis:
| Verzeichnis | Kap. | Beschreibung | s.a. |
|---|---|---|---|
| 1Lotto | 11.1 | eine einfache Ziehung (mit Zusatzzahl) | Aspekte implantieren |
| 2ajunit | 11.2 | Instrumentierung der JUnit-Bibliothek | Anpassung fertiger Bibliotheken |
| 3Palindrom | 11.3 | Erzeugung einer Spezial-Version der JDK-Runtime-Bibliothek | Erweiterung der JDK-Bibliothek |
Die Datei build.xml dient zum Übersetzen der Beispiele ('ant') und zum Aufräumen ('ant clean').
Die im Buch verwendete Jar-Datei lässt sich über 'ant jar.file' erzeugen und wie im Buch beschrieben starten:
Buildfile: build.xml
init:
[echo] building Kap11-1Lotto...
[mkdir] Created dir: 1Lotto/build/classes
compile:
[javac] Compiling 7 source files to 1Lotto/build/classes
jar.file:
[jar] Building jar: 1Lotto/build/lotto.jar
BUILD SUCCESSFUL
Total time: 3 seconds
Ziehung: 21 36 39 44 48 49 Zusatzzahl 18
Die Instrumentierung von Hand mit anschließendem Programmstart sieht unter Linux und MacOS so aus:
execution(void lotto.ZiehungMitZusatzzahl.main(String[])) execution(void lotto.Ziehung.start()) execution(void lotto.Trommel.init(int)) execution(void lotto.Trommel.init(int)) execution(int lotto.Ziehung.zieheZahl()) execution(void lotto.Trommel.mixNumbers()) execution(void lotto.Trommel.mixNumbers(int, int)) execution(void lotto.Trommel.mixNumbers(int, int, Random)) execution(void lotto.Trommel.mixNumbers(int)) execution(Integer lotto.Trommel.getNumber()) execution(Integer lotto.Trommel.getNumber()) ... Ziehung: 19 23 27 28 34 42 Zusatzzahl 3 execution(void lotto.ZiehungMitZusatzzahl.main(String[]))
Mit der im Buch beschriebenen build.xml können Sie die Bibliothek 'myjunit.jar' bauen, die für dieses Projekt benötigt wird:
Buildfile: build.xml
init:
[mkdir] Created dir: 2ajunit/lib
[mkdir] Created dir: 2ajunit/classes
myjunit.jar:
BUILD SUCCESSFUL
Total time: 3 seconds
Buildfile: build.xml
init:
myjunit.jar:
compile:
[javac] Compiling 1 source file to 2ajunit/classes
BUILD SUCCESSFUL
Total time: 5 seconds
. testObject(test.ObjectTest): 3 ms . testEquals(test.ObjectTest): 0 ms . testToString(test.ObjectTest): 79 ms Time: 0,087 OK (3 tests)
Buildfile: build.xml
init:
[echo] building Kap11-3Palindrom...
[mkdir] Created dir: 3Palindrom/build
[mkdir] Created dir: 3Palindrom/build/classes
myrt.jar:
BUILD SUCCESSFUL
Total time: 52 seconds
Buildfile: build.xml
init:
[echo] building Kap11-3Palindrom...
myrt.jar:
compile.java:
[javac] Compiling 2 source files to 3Palindrom/build/classes
compile:
jar.file:
[jar] Building jar: 3Palindrom/build/Kap11-3Palindrom.jar
BUILD SUCCESSFUL
Total time: 55 seconds
Exception in thread "main" java.lang.NoSuchMethodError: java.lang.String.reverse()Ljava/lang/String;
at palindrom.Finder.isPalindrom(Unknown Source)
at palindrom.Finder.hasNext(Unknown Source)
at palindrom.Finder.main(Unknown Source)
anna hannah otto