Projektaufbau (OSGi bundles)

Hallo Jonas,

vielen Dank für die Hintergrundinfos und freundliche Grüße zurück an Markus Duchon.

Das mit der @Reference für TimeOfUseTariff passt so. In diesem Fall liefert OSGi (via dependency injection) einen beliebigen vorhanden Service, der TimeOfUseTariff implementiert. Das wird im Regelfall nur einer sein; wenn mehrere unterstützt werden sollen, dann würden wir das so machen, wie z. B. bei verschiedenen Controllern. Dafür wird dann auf die @Reference ein target filter gelegt, der nur ganz bestimmte Services akzeptiert (z. B. anhand der Component-ID).

Der Fehler osgi.wiring.package=javax.xml.soap klingt sehr stark nach dem Problem, dass du die falsche Version des Java Development Kit (JDK) einsetzt. Leider erfordert OpenEMS immer noch Java 8. Es wurde zwar schon angefangen, auf eine neuer Version umzustellen (-> hier: Switch to Java 11 by sfeilmeier · Pull Request #1596 · OpenEMS/openems · GitHub), aber wir benötigen dafür erst die neuen Softwarepakete für unser Deployment (z. B. für Debian-Pakete für FEMS/Leaflet/…). Dafür warten wir aktuell auf das Adoptium Projekt (-> Complete new `linuxNew` based packaging · Issue #330 · adoptium/installer · GitHub)

javax.xml.soap wurde mit Java 11 entfernt. Ich gehe davon aus, dass du mit mindestens mit Version 11 baust.

Hier stehen ein paar Tips, wie ein Reset des Workspace durchgeführt und alles neu gebaut werden kann. Das klappt bei mir in der Praxis immer sehr gut (ist aber mit neuen Versionen von Eclipse und bndtools seltener notwendig geworden): Build in Eclipse fails with many errors - #2 by stefan.feilmeier

Gruß,
Stefan