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