You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Christian Schneider (JIRA)" <ji...@apache.org> on 2012/10/30 11:30:12 UTC

[jira] [Commented] (ZOOKEEPER-1334) Zookeeper 3.4.x is not OSGi compliant - MANIFEST.MF is flawed

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-1334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13486780#comment-13486780 ] 

Christian Schneider commented on ZOOKEEPER-1334:
------------------------------------------------

If you completely switched the code to use the slf4j-api. Then you should not have compile time deps to slf4j-log4j12 and log4j. These should be scope test. For compile scope you should only depend on slf4j-api. In the Manifest you should also only import the slf4j api packages not log4j. Then it will work great in apache karaf.
                
> Zookeeper 3.4.x is not OSGi compliant - MANIFEST.MF is flawed
> -------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1334
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1334
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.4.0
>            Reporter: Claus Ibsen
>            Assignee: Jean-Baptiste Onofré
>         Attachments: ZOOKEEPER-1334.patch
>
>
> In Zookeeper 3.3.x you use log4j for logging, and the maven dep is
> eg from 3.3.4
> {code}
>     <dependency>
>       <groupId>log4j</groupId>
>       <artifactId>log4j</artifactId>
>       <version>1.2.15</version>
>       <scope>compile</scope>
>     </dependency>
> {code}
> Now in 3.4.0 or better you changed to use slf4j also/instead. The maven pom.xml now includes:
> {code}
>   <dependency>
>       <groupId>org.slf4j</groupId>
>       <artifactId>slf4j-api</artifactId>
>       <version>1.6.1</version>
>       <scope>compile</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.slf4j</groupId>
>       <artifactId>slf4j-log4j12</artifactId>
>       <version>1.6.1</version>
>       <scope>compile</scope>
>     </dependency>
>     <dependency>
>       <groupId>log4j</groupId>
>       <artifactId>log4j</artifactId>
>       <version>1.2.15</version>
>       <scope>compile</scope>
>     </dependency>
> {code}
> But the META-INF/MANIFEST.MF file in the distribution did not change to reflect this.
> The 3.3.4 MANIFEST.MF, import packages
> {code}
> Import-Package: javax.management,org.apache.log4j,org.osgi.framework;v
>  ersion="[1.4,2.0)",org.osgi.util.tracker;version="[1.1,2.0)"
> {code}
> And the 3.4.1 MANIFEST.MF, import packages:
> {code}
> Import-Package: javax.management,org.apache.log4j,org.osgi.framework;v
>  ersion="[1.4,2.0)",org.osgi.util.tracker;version="[1.1,2.0)"
> {code}
> This makes using zookeeper 3.4.x in OSGi environments not possible, as we get NoClassDefFoundException for slf4j classes.

--
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