Trotz größter Mühen und umfangreichen Korrekturlesungen kommt es leider vor, dass sich Fehler in ein gedrucktes Buch einschleichen. Auf diesen Seiten sind die uns bekannten Fehler aus unserem Buch sowie ihre Korrekturen wiedergegeben.
Falls sie mit den Beispielen aus unserem Buch Probleme haben oder andere Fehler finden, dann schicken Sie uns bitte eine E-Mail an autoren ( at ) osgibook.org.
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Seite 84, Mitte:
In Abschnitt 5.5.2 wird im Abschnitt "Versionsbereiche" ist die Interpretation des Versionsbereichs [1,2] fehlerhaft:
- [1,2] bedeutet 1.0.0 < x < 2.0.0
+ [1,2] bedeutet 1.0.0 <= x <= 2.0.0
Seite 84, unten:
Im Abschnitt "Versionsbereiche bei Import-Package" stimmt die untere Version des im Listing abgebildeten Versionbereichs nicht mit der im Text angegebenen Version überein:
Mit folgendem Eintrag in Ihrer Manifest-Datei importieren Sie bspw. das Package org.osgibook.translation in einer Version,
- die größer oder gleich 1.1.0 und kleiner als 1.5.0 ist:
+ die größer oder gleich 1.0.0 und kleiner als 1.5.0 ist:
Seite 85, oben:
Im folgenden Absatz "Versionsbereiche bei Require-Bundle" (S. 85) ist das Attribut version falsch:
Require-Bundle: org.osgibook.translation;
- version="[1.0.0,2.0.0)"
+ bundle-version="[1.0.0,2.0.0)"
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Seite 105, 9. Zeile:
Auf der Seite 105 fehlt in der 9. Zeile eine schließende Klammer:
- new TranslationServiceImpl(locale, properties);
+ new TranslationServiceImpl(locale), properties);
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Seite 153, Schritt 3, 3. Zeile:
Die Datei zur Spezifikation der lokalen Ausführungsrechte eines Bundles heißt permissions.perm, nicht permission.perm:
- Plug-in-Projektes eine Datei permission.perm mit den in Listing 9–3
+ Plug-in-Projektes eine Datei permissions.perm mit den in Listing 9–3
Seite 160, unten:
Der Conditional Permission Admin Service ist im Interface ConditionalPermissionAdmin spezifiziert, nicht im Interface ConditionalPermissionAdminService:
- Methode am Interface ConditionalPermissionAdminService nutzen:
+ Methode am Interface ConditionalPermissionAdmin nutzen:
Seite 161, Mitte:
Das Beispiel auf Seite 161 enthält einige Syntaxfehler:
// ConditionInfo erzeugen
ConditionInfo conditionInfo =
new ConditionInfo("[org.osgi.service.Condpermadmin."+
- "BundleLocationCondition \"*/org.osgibook.helloworld*\"])"
+ "BundleLocationCondition \"*/org.osgibook.helloworld*\"]");
PermissionInfo packagePermissionInfo =
new PermissionInfo("(org.osgi.framework.PackagePermission" +
- "\"*\" \"IMPORT\");
+ " \"*\" \"IMPORT\")");
PermissionInfo servicePermissionInfo =
- new PermissionInfo("(org.osgi.framework.PackagePermission" +
- " \"*\" \"IMPORT\");
+ new PermissionInfo("(org.osgi.framework.ServicePermission" +
+ " \"get\")");
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Seite 169, Mitte, Listing 10-3:
Der Name des Parameters in der _greet()-Methode muss commandInterpreter statt ci lauten:
- public void _greet(CommandInterpreter ci)
+ public void _greet(CommandInterpreter commandInterpreter)
Problem
Die Beispiel zur Installation des Knopflerfish-Desktops haben wir mit der Knopflerfish-Version 2.0.1 entwickelt. In der aktuellen Knopflerfish-Distribution (derzeit 2.0.5) sind im verwendeten Bundle 'desktop_all-2.0.0.jar' andere Package-Abhängigkeiten definiert, als dies in der von uns verwendeten Knopflerfish-Distribution 2.0.1 der Fall war. Ungünstigerweise haben die Knopflerfish-Entwickler trotz des geänderten Manifests im Bundle 'desktop_all-2.0.0.jar' die Versionnummer nicht entsprechend hochgesetzt, so dass bei der Installation der Knopflerfish-Desktops über die Knopflerfish-Seite nun zusätzliche Bundles benötigt werden.
Lösung
Zur Installation des Knopflerfish-Desktops aus den Distributionen > 2.0.2 müssen deshalb - anders als im Buch beschrieben - die folgenden Bundles installiert und gestartet werden:
install "http://www.knopflerfish.org/repo/jars/util/util-2.0.0.jar" start
install "http://www.knopflerfish.org/repo/jars/log/log_all-2.0.0.jar" start
install "http://www.knopflerfish.org/repo/jars/console/console_all-2.0.0.jar" start
install "http://www.knopflerfish.org/repo/jars/remotefw/remotefw_api-2.0.0.jar" start
install "http://www.knopflerfish.org/repo/jars/desktop/desktop_all-2.0.0.jar" start
Zusätzlich muss das Bundle org.eclipse.osgi.services_<version>.jar im Framework installiert sein, das Bestandteil der Eclipse-Equinox-Distribution ist.
Alternative Lösung
Die auf dieser Webseite gespiegelten Knopflerfish-Bundles sind aus der Knopflerfish-Version 2.0.1 entnommen und können wie im Buch beschrieben installiert werden:
install "http://www.osgibook.org/repo/jars/util/util-2.0.0.jar" start
install "http://www.osgibook.org/repo/jars/desktop/desktop_all-2.0.0.jar" start
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Seite 212, oben, Tab. 12–3:
In Tab. 12–3 ist in der Beschreibung des Attributes 'serviceFactory' ist 'false' mit 'true' vertauscht:
- Gibt an, ob der Service für alle nutzenden Bundles identisch sein soll (true) oder ...
+ Gibt an, ob der Service für alle nutzenden Bundles identisch sein soll (false) oder ...
Hier wird im Text an verschiedenen Stellen die Methode update() erwähnt, die allerdings updated() heisst.
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Kapitel 14.4.3, S. 262, Mitte:
Hier ist das Wort "nicht" zu viel, da ein Rückgabewert einen Fehler beschreibt, bei null ist alles in Ordnung:
- Falls der übergebene Wert nicht der Attributbeschreibung entspricht, ...
+ Falls der übergebene Wert der Attributbeschreibung entspricht, ...
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Kapitel 15.5.2, S. 278, Code-Beispiel:
Der Wert des Properties EventConstants.EVENT_TOPIC muss ein String-Array sein:
- properties.setProperty(EventConstants.EVENT_TOPIC,
"org/osgi/framework/BundleEvent/*");
+ properties.setProperty(EventConstants.EVENT_TOPIC,
new String[]{"org/osgi/framework/BundleEvent/*"});
In Kapitel 18.3.1 wird im Beispiel auf S.317 unten ein ungeschickter Variablenbezeichner verwendet. Anstatt userPreferences sollte es besser systemPreferences heißen:
- Preferences userPreferences = preferencesService.getSystemPreferences();
+ Preferences systemPreferences = preferencesService.getSystemPreferences();
Anmerkung: Zu korrigierende Zeilen sind nachfolgend mit einem '-' gekennzeichnet, die korrigierten Zeilen mit einem '+'.
Im Literaturverzeichnis fehlt der Eintrag für die Referenz [SERBIN], die auf Seite 201 referenziert wird:
+ [SERBIN]
http://gravity.sourceforge.net/servicebinder/