[ https://issues.apache.org/jira/browse/LOG4J2-345?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Roland Weiglhofer updated LOG4J2-345: ------------------------------------- Description: Hi all Log4j/OSGi experts! Yesterday I started to migrate from log4j to log4j2. I replaced all Log4j 1.x bundles with log4j-1.2-api as described here: http://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html But I got following error: Unresolved constraint in bundle MyBundle [21]: Unable to resolve 21.0: missing requirement [21.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.log4j)(version>=1.2.0)(!(version>=2.0.0))) so...I checked the capabilities of the log4j-1.2-api bundle: g! inspect cap * 11 org.apache.logging.log4j-1.2-api [11] provides: ----------------------------------------------- osgi.wiring.bundle; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] osgi.wiring.host; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] As you can see logging.log4j-1.2-api doesn't export the log4j API 1.2. It still requires log4j 1.2. All dependent bundles can not be resolved until I add the old log4j.jar. The maven-bundle-plugin does not export the packages. Roland was: Hi all Log4j/OSGi experts! Yesterday I started to migrate from log4j to log4j2. I replaced all Log4j 1.x bundles with log4j-1.2-api as described here: http://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html But I got following error: Unresolved constraint in bundle MyBundle [21]: Unable to resolve 21.0: missing requirement [21.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.log4j)(version>=1.2.0)(!(version>=2.0.0))) so...I checked the capabilities of the log4j-1.2-api bundle: g! inspect cap * 11 org.apache.logging.log4j-1.2-api [11] provides: ----------------------------------------------- osgi.wiring.bundle; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] osgi.wiring.host; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] As you can see logging.log4j-1.2-api doesn't export the log4j API 1.2. It still requires log4j 1.2. All dependent bundles can not be resolved until I add the old log4j.jar. The maven-bundle-plugin does not export the packages. So, my suggestion for the poms is the following: parent pom ... <properties> ... <osgi.export.log4j1.2>org.apache.log4j;version=1.2</osgi.export.log4j1.2> </properties> ... <build> <plugins> ... <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <_nouses>true</_nouses> <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME,JAVA_1_9_HOME</_removeheaders> </instructions> </configuration> </plugin> ... log4j12-api pom ... <packaging>bundle</packaging> ... <build> <plugins> ... <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <inherited>true</inherited> <configuration> <instructions> <Bundle-SymbolicName>${osgi.symbolicName}</Bundle-SymbolicName> <Private-Package>${osgi.private}</Private-Package> <Import-Package>${osgi.import},*</Import-Package> <DynamicImport-Package>${osgi.dynamicImport}</DynamicImport-Package> <Bundle-DocURL>${project.url}</Bundle-DocURL> <Export-Package>${osgi.export.log4j1.2}</Export-Package> </instructions> </configuration> </plugin> ... First, In the parent pom I added <extensions>true</extensions> to include the extension of the maven-bundle-plugin. Second, I deleted the manifest-entries because the maven-bundle-plugin creates the manifest automatically. In the log4j12-api pom I switched to <packaging>bundle</packaging>. By this the maven-bundle-plugin creates a jar including a manifest (bundle). I added <inherited>true</inherited> to inherit from the parent pom. Finally, I added <Export-Package>${osgi.export.log4j1.2}</Export-Package> which exports the api and makes it accessable to other bundles. This should solve the issue but I didn't tested it and it may affect other projects. Roland > logging.log4j-1.2-api doesn't export the log4j API 1.2. Dependent bundles can > not be resolved. > ---------------------------------------------------------------------------------------------- > > Key: LOG4J2-345 > URL: https://issues.apache.org/jira/browse/LOG4J2-345 > Project: Log4j 2 > Issue Type: Bug > Components: log4j 1.2 emulation > Affects Versions: 2.0-beta4, 2.0-beta8, 2.0-beta9 > Environment: OSGi / Apache Felix 4.x > Reporter: Roland Weiglhofer > Labels: Bundle, Export-Package, Log4j-1.2, Maven-Bundle-Plugin, > OSGi, POM > Fix For: 2.0-beta9, 2.0 > > Attachments: log4j2 1.2api.patch > > > Hi all Log4j/OSGi experts! > Yesterday I started to migrate from log4j to log4j2. I replaced all Log4j 1.x > bundles with log4j-1.2-api as described here: > http://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html > But I got following error: > Unresolved constraint in bundle MyBundle [21]: Unable to resolve 21.0: > missing requirement [21.0] osgi.wiring.package; > (&(osgi.wiring.package=org.apache.log4j)(version>=1.2.0)(!(version>=2.0.0))) > so...I checked the capabilities of the log4j-1.2-api bundle: > g! inspect cap * 11 > org.apache.logging.log4j-1.2-api [11] provides: > ----------------------------------------------- > osgi.wiring.bundle; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] > osgi.wiring.host; org.apache.logging.log4j-1.2-api 2.0.0.beta8 [UNUSED] > As you can see logging.log4j-1.2-api doesn't export the log4j API 1.2. It > still requires log4j 1.2. All dependent bundles can not be resolved until I > add the old log4j.jar. > The maven-bundle-plugin does not export the packages. > Roland -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org