felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Reich <jeanbaptiste.re...@gmail.com>
Subject Re: Class loading problem
Date Fri, 19 Nov 2010 21:50:45 GMT
I did another experiment but this time with the normal JRE 1.6
I have created a bundle that uses junit.framework package (just for the
purpose of this example) and I have started felix with that bundle and with
the default configuration:
java -cp bin/junit-3.8.1.jar -jar bin/felix.jar

And I get this error:
org.osgi.framework.BundleException: Unresolved constraint in bundle
extends-jre [117]: Unable to resolve 117.0: missing requirement [117.0]
package; (package=junit.framework)
at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3407)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1714)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1143)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
at java.lang.Thread.run(Thread.java:662)

This is the normal behaviour.
After that I have changed the felix configuration by adding this:
org.osgi.framework.system.packages.extra=junit.framework

But I still have an error:
java.lang.NoClassDefFoundError: junit/framework/TestCase
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.findClass(ModuleImpl.java:1904)
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:728)
at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:72)
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1765)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at
org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:646)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3651)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:1817)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1739)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1143)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
at java.lang.Thread.run(Thread.java:662)

This is the same problem I described before. So this is not related to the
CDC architecture.

So, is this a bug ?
Is there something special to do in the configuration to resolve this case ?

Thanks

2010/11/19 Jean-Baptiste Reich <jeanbaptiste.reich@gmail.com>

> Yes, I did'nt mentioned it but I tried to use boot, app, ext and framework
> and nothing work
>
> 2010/11/19 Karl Pauls <karlpauls@gmail.com>
>
> Did you try to set:
>>
>> org.osgi.framework.bundle.parent="framework"
>>
>> regards,
>>
>> Karl
>>
>> 2010/11/19 Jean-Baptiste Reich <jeanbaptiste.reich@gmail.com>:
>> > First, this is my MANIFEST:
>> > Manifest-Version: 1.0
>> > Export-Package: com.sandbox.jsse.server;uses:="javax.net,javax.net.ss
>> >  l,com.sun.net.ssl,org.osgi.framework"
>> > Built-By: jb
>> > Tool: Bnd-0.0.357
>> > Bundle-Name: jsse-server
>> > Created-By: Apache Maven Bundle Plugin
>> > Bundle-Version: 0.0.1.SNAPSHOT
>> > Build-Jdk: 1.6.0_20
>> > Bnd-LastModified: 1290149610828
>> > Bundle-ManifestVersion: 2
>> > Bundle-Activator: com.sandbox.jsse.server.JSSEActivator
>> > Import-Package: com.sandbox.jsse.server,com.sun.net.ssl,javax.net,jav
>> >  ax.net.ssl,org.osgi.framework;version="1.3"
>> > Bundle-SymbolicName: jsse-server
>> > For my tests, I use the felix framework 3.0.5. My basic configuration is
>> > attached to this mail
>> > These are the felix debug logs:
>> > DEBUG: WIRE: [62.0] package;
>> (&(package=org.osgi.framework)(version>=1.3.0))
>> > -> [0]
>> > DEBUG: WIRE: [99.0] package;
>> (&(package=org.osgi.framework)(version>=1.4.0))
>> > -> [0]
>> > DEBUG: WIRE: [99.0] package;
>> > (&(package=org.osgi.service.packageadmin)(version>=1.2.0)) -> [0]
>> > DEBUG: WIRE: [99.0] package;
>> > (&(package=org.osgi.service.startlevel)(version>=1.1.0)) -> [0]
>> > DEBUG: WIRE: [2.0] package;
>> > (&(package=org.osgi.framework)(version>=1.4.0)(!(version>=2.0.0)))
->
>> [0]
>> > DEBUG: WIRE: [2.0] package;
>> > (&(package=org.osgi.service.cm)(version>=1.2.0)(!(version>=2.0.0)))
->
>> > [62.0]
>> > DEBUG: WIRE: [2.0] package;
>> > (&(package=org.osgi.service.log)(version>=1.3.0)(!(version>=2.0.0)))
->
>> > [99.0]
>> > DEBUG: WIRE: [2.0] package;
>> >
>> (&(package=org.osgi.service.packageadmin)(version>=1.2.0)(!(version>=2.0.0)))
>> > -> [0]
>> > DEBUG: WIRE: [2.0] package;
>> >
>> (&(package=org.osgi.service.startlevel)(version>=1.1.0)(!(version>=2.0.0)))
>> > -> [0]
>> > DEBUG: WIRE: [2.0] package;
>> > (&(package=org.osgi.service.url)(version>=1.0.0)(!(version>=2.0.0)))
->
>> [0]
>> > DEBUG: WIRE: [2.0] package;
>> > (&(package=org.osgi.util.tracker)(version>=1.3.0)(!(version>=2.0.0)))
->
>> [0]
>> > DEBUG: WIRE: [7.0] package;
>> (&(package=org.osgi.framework)(version>=1.3.0))
>> > -> [0]
>> > DEBUG: WIRE: [7.0] package;
>> > (&(package=org.osgi.util.tracker)(version>=1.3.0)) -> [0]
>> > DEBUG: WIRE: [8.0] package;
>> > (&(package=org.apache.felix.shell)(version>=1.0.0)) -> [99.0]
>> > DEBUG: WIRE: [8.0] package;
>> (&(package=org.osgi.framework)(version>=1.3.0))
>> > -> [0]
>> > -> DEBUG: WIRE: [21.0] package; (package=com.sun.net.ssl) -> [0]
>> > DEBUG: WIRE: [21.0] package; (package=javax.net) -> [0]
>> > DEBUG: WIRE: [21.0] package; (package=javax.net.ssl) -> [0]
>> > DEBUG: WIRE: [21.0] package;
>> (&(package=org.osgi.framework)(version>=1.3.0))
>> > -> [0]
>> > ERROR: Error starting
>> >
>> file:/home/jb/projects/felix-framework-3.0.5/deploy/jsse-server-0.0.1-SNAPSHOT.jar
>> > (org.osgi.framework.BundleException: Activator start error in bundle
>> > jsse-server [21].)
>> > java.lang.NoClassDefFoundError: javax.net.ServerSocketFactory
>> > at java.lang.Class.getConstructor0(Native Method)
>> > at
>> org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3657)
>> > at org.apache.felix.framework.Felix.activateBundle(Felix.java:1817)
>> > at org.apache.felix.framework.Felix.startBundle(Felix.java:1739)
>> > at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1143)
>> > at
>> org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
>> > at java.lang.Thread.run(Thread.java:712)
>> > at java.lang.Thread.startup(Thread.java:782)
>> > DEBUG: DYNAMIC WIRE: [7.0] package; (package=org.apache.felix.shell) ->
>> > [99.0]
>> > I tried to use these different configurations:
>> > 1:
>> > org.osgi.framework.system.packages.extra=com.sun.net.ssl; \
>> > com.sun.net.ssl.internal.ssl; \
>> > com.sun.net.ssl.internal.www.protocol.https; \
>> > com.sun.security.cert.internal.x509; \
>> > javax.net; \
>> > javax.net.ssl; \
>> > javax.security.auth.x509; \
>> > javax.security.cert;version=1.4.0
>> > #org.osgi.framework.bootdelegation=sun.*,com.sun.*
>> > 2:
>> > org.osgi.framework.system.packages.extra=com.sun.net.ssl; \
>> > com.sun.net.ssl.internal.ssl; \
>> > com.sun.net.ssl.internal.www.protocol.https; \
>> > com.sun.security.cert.internal.x509; \
>> > javax.net; \
>> > javax.net.ssl; \
>> > javax.security.auth.x509; \
>> > javax.security.cert;version=1.4.0
>> > org.osgi.framework.bootdelegation=sun.*,com.sun.*,javax.*
>> > 3:
>> > org.osgi.framework.system.packages.extra=com.sun.net.ssl; \
>> > com.sun.net.ssl.internal.ssl; \
>> > com.sun.net.ssl.internal.www.protocol.https; \
>> > com.sun.security.cert.internal.x509; \
>> > javax.net; \
>> > javax.net.ssl; \
>> > javax.security.auth.x509; \
>> > javax.security.cert;version=1.4.0
>> > org.osgi.framework.bootdelegation=*
>> > 4 (in this case I changed the imported packages to optional in the
>> > MANIFEST):
>> > #org.osgi.framework.system.packages.extra=
>> > org.osgi.framework.bootdelegation=sun.*,com.sun.*,javax.*
>> > 5 (in this case I changed the imported packages to optional in the
>> > MANIFEST):
>> > #org.osgi.framework.system.packages.extra=
>> > org.osgi.framework.bootdelegation=*
>> >
>> >
>> > None of them works...
>> > 2010/11/19 Marcel Offermans <marcel.offermans@luminis.nl>
>> >>
>> >> You can, but it's *not* the preferred solution. Boot delegation should
>> >> only be used if all else fails. Just exporting the packages through the
>> >> system bundle is more explicit (you actually import what you need,
>> which
>> >> makes it very visible and debuggable).
>> >>
>> >> Greetings, Marcel
>> >>
>> >> On 19 Nov 2010, at 10:14 , Ke Yao wrote:
>> >>
>> >> > You can add the sentence which is
>> >> > "org.osgi.framework.bootdelegation=javax.* "in the felix's cfg file
>> .Due to
>> >> > when felix load the JDK, it only load the java package, the javax and
>> org
>> >> > packages aren't been loaded, so you need cfg the bootdelegation.
>> >> >
>> >> >
>> >> > The most powerful enemy is yourself,beat your own,win the world!
>> >> >
>> >> >
>> _________________________________________________________________________________________
>> >> >
>> >> > 姚柯(Ivan Yao)
>> >> > 浙江网新恒天软件有限公司
>> >> > Insigma Hengtian Software Ltd.
>> >> > Address: Building J1, Insigma Software Park, 1 Xiyuan8 Road, San Dun,
>> >> > West Lake District
>> >> > Zip Code: 310007
>> >> > Tel:13735434226
>> >> > MSN:yaoke_hz@hotmail.com <MSN%3Ayaoke_hz@hotmail.com>
>> >> >
>> >> > -----Original Message-----
>> >> > From: Marcel Offermans [mailto:marcel.offermans@luminis.nl]
>> >> > Sent: 2010年11月19日 17:10
>> >> > To: users@felix.apache.org
>> >> > Subject: Re: Class loading problem
>> >> >
>> >> > @Jean-Baptiste: Perhaps a stupid question, but since it's a javax.*
>> >> > class that cannot be found, are you actually exporting these packages
>> >> > through the system bundle?
>> >> >
>> >> > On 19 Nov 2010, at 10:01 , Karl Pauls wrote:
>> >> >
>> >> >> Can you share the manifest of your bundle with us? Additionally,
can
>> >> >> you set the debug level to 4 and give the output as well?
>> >> >>
>> >> >> regards,
>> >> >>
>> >> >> Karl
>> >> >>
>> >> >> On Fri, Nov 19, 2010 at 8:21 AM, Jean-Baptiste Reich
>> >> >> <jeanbaptiste.reich@gmail.com> wrote:
>> >> >>> Hello,
>> >> >>>
>> >> >>> I tried to run felix on a CDC architecture and with jsse enabled
>> >> >>> (which is
>> >> >>> optional). For that, I add the jsse jars to the classpath on
the
>> >> >>> command
>> >> >>> line when starting felix with my VM (cvm).
>> >> >>> Then in my bundle I try to load the class
>> >> >>> javax.net.ServerSocketFactory but
>> >> >>> I receive a NoClassDefFoundError.
>> >> >>> When I launch my project as a normal JAR (not a bundle) with
>> exactly
>> >> >>> the
>> >> >>> same command line, it works (in that case the server is not
>> embedded
>> >> >>> in
>> >> >>> felix). So, I assume there is a class loading problem but I
don't
>> >> >>> understand
>> >> >>> it.
>> >> >>>
>> >> >>> Did I miss something ? Is there a special way to handle this?
(I
>> have
>> >> >>> already tried to change the bootdelegation and the bundle parent
>> but
>> >> >>> it does
>> >> >>> not work)
>> >> >>>
>> >> >>> Thanks
>> >> >>>
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Karl Pauls
>> >> >> karlpauls@gmail.com
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> >> >> For additional commands, e-mail: users-help@felix.apache.org
>> >> >>
>> >> >
>> >> >
>> >> > ---------------------------------------------------------------------
>> >> > To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> >> > For additional commands, e-mail: users-help@felix.apache.org
>> >> >
>> >> >
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> >> For additional commands, e-mail: users-help@felix.apache.org
>> >>
>> >
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> > For additional commands, e-mail: users-help@felix.apache.org
>> >
>>
>>
>>
>> --
>> Karl Pauls
>> karlpauls@gmail.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message