Exception below is cast when I use restlet Jackson in OSGi environment. 

INFO: Unable to register the helper org.restlet.ext.jackson.JacksonConverter
java.lang.ClassNotFoundException: org.restlet.ext.jackson.JacksonConverter
        at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1710)
        at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:926)
        at org.restlet.engine.internal.Activator$1.loadClass(Activator.java:97)
        at org.restlet.engine.Engine.registerHelper(Engine.java:723)
        at org.restlet.engine.Engine.registerHelpers(Engine.java:761)
        at 
org.restlet.engine.internal.Activator.registerHelper(Activator.java:93)
        at 
org.restlet.engine.internal.Activator.registerHelper(Activator.java:75)
        at 
org.restlet.engine.internal.Activator.registerHelpers(Activator.java:123)
        at org.restlet.engine.internal.Activator.start(Activator.java:140)
        at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:641)
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
        at 
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.osgi.framework.BundleException: Unresolved constraint in bundle 
org.restlet.ext.jackson [39]: Unable to resolve 39.0: missing
 requirement [39.0] osgi.wiring.package; 
(osgi.wiring.package=org.codehaus.jackson.impl)
        at 
org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
        at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1703)
        ... 14 more

After check, I found that package org.codehaus.jackson.impl in 
org.codehaus.jackson.core.jar is private.  The package is the same as the one 
when I use restlet 2.0.6. Something changed in 2.0.11? After comparison with 
restlet 2.0.11,  I found that the code of org.restlet.ext.jackson.jar with 
version 2.0.6 and 2.0.11 are the same. But why the manifest information in 
2.0.11 is different from 2.0.6?

The difference is below:
Here is the import information in 2.0.11:
Import-Package: org.codehaus.jackson,org.codehaus.jackson.annotate,org
 .codehaus.jackson.impl,org.codehaus.jackson.io,org.codehaus.jackson.m
 ap,org.codehaus.jackson.map.annotate,org.codehaus.jackson.map.deser,o
 rg.codehaus.jackson.map.ext,org.codehaus.jackson.map.introspect,org.c
 odehaus.jackson.map.ser,org.codehaus.jackson.map.type,org.codehaus.ja
 ckson.map.util,org.codehaus.jackson.node,org.codehaus.jackson.schema,
 org.codehaus.jackson.sym,org.codehaus.jackson.type,org.codehaus.jacks
 on.util,org.restlet,org.restlet.data,org.restlet.engine,org.restlet.e
 ngine.converter,org.restlet.engine.resource,org.restlet.representatio
 n,org.restlet.resource,org.restlet.service,org.restlet.util
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.codehaus.jackson;bundle-version="1.4.0"

And the import information in 2.0.6 is :
Import-Package: org.codehaus.jackson,org.codehaus.jackson.map,org.rest
 let,org.restlet.data,org.restlet.engine,org.restlet.engine.converter,
 org.restlet.engine.resource,org.restlet.representation,org.restlet.re
 source,org.restlet.service,org.restlet.util
Bundle-RequiredExecutionEnvironment: J2SE-1.5

Besides the difference in import information, no require bundle is needed in 
2.0.6. 

For experiment, Then I edit the manifest file in 2.0.11 and change it into 
2.0.6. Then the bundle works well. 

Then here comes my questions:
1. Is there something more needed in org.restlet.ext.jackson.jar of verion 
2.0.11 ? If not, is it a bug in org.restlet.ext.jackson.jar of verion 2.0.11?
2. Considering the license , is it legal if I change the manifest file?

Thanks a lot.

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2934357

Reply via email to