Problem
Wenn Sie den Code im AEM installieren, wird das OSGi-Framework-Bundle aktualisiert, das einen Konflikt im AEM verursacht. In den Protokollen sehen wir ähnliche Meldungen wie die folgenden für das benutzerdefinierte Bundle:
19.04.2017 15:09:11.606 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Updated bundle custom-bundle-name [496] from resource TaskResource(url=jcrinstall:/apps/customapp/install/custom-bundle-name-1.2.0-SNAPSHOT.jar, entity=bundle:custom-bundle-name, state=INSTALL, attributes=[org.apache.sling.installer.api.tasks.ResourceTransformer=:9035:9042:9011:, Bundle-SymbolicName=custom-bundle-name, Bundle-Version=1.2.0.SNAPSHOT], digest=1492632551274) 19.04.2017 15:09:11.607 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Refreshing 1 bundles: [custom-bundle-name [496]] 19.04.2017 15:09:11.608 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Waiting up to 90 seconds for bundles refresh 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Done refreshing 1 bundles 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-nameBundleEvent RESOLVED 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-name BundleEvent STARTING 19.04.2017 15:09:11.609 *INFO* [OsgiInstallerImpl] custom-bundle-name BundleEvent STARTED 19.04.2017 15:09:11.610 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Started bundle custom-bundle-name [496] 19.04.2017 15:09:11.627 *INFO* [FelixDispatchQueue] org.apache.felix.framework FrameworkEvent PACKAGES REFRESHED
Umgebung
AEM 6.x
Ursache
1. Eine mögliche Ursache ist, dass das Paket keine Exporte, Importe oder Code enthält. Dies verursacht bekanntermaßen das Problem.
2. Das benutzerdefinierte Paket könnte Java-Pakete auf Systemebene exportieren, die bereits exportiert und von einigen Core-AEM-, Apache Felix- oder Sling-Paketen verwendet werden.
Lösung
Leeres OSGi-Paket
Wenn Sie ein leeres Paket bereitstellen, beenden Sie es. Es ist nicht zulässig, dies zu tun, sofern es sich um ein Paket mit Ressourcen handelt.
Systemebene-Export
Wenn Sie eine Bibliothek exportieren, die vom System (AEM, sling, Apache Felix, Oak usw.) verwendet wird, ändern Sie Ihr benutzerdefiniertes Paket, um die Bibliothek mit dem Tag „org.apache.felix maven-bundle-plugin-<Embed-Dependency>“ einzubetten. Sie können auswählen, ob die Bibliothek dem <Export-Package>-Tag hinzugefügt werden soll oder nicht. Sie können weiterhin auf die Bibliothek innerhalb des Codes im Paket zugreifen. Sie wird jedoch nicht in alle anderen Paketen exportiert.