On 11/19/10 16:50, Jean-Baptiste Reich wrote: > 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
FYI: You cannot specify "-cp" and "-jar" at the same time..."-jar" ignores "-cp". You'd have to do it like this: java -cp /path/to/junit.jar:/path/to/felix.jar org.apache.felix.main.Main -> richard > 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 <[email protected]> > >> Yes, I did'nt mentioned it but I tried to use boot, app, ext and framework >> and nothing work >> >> 2010/11/19 Karl Pauls <[email protected]> >> >> Did you try to set: >>> org.osgi.framework.bundle.parent="framework" >>> >>> regards, >>> >>> Karl >>> >>> 2010/11/19 Jean-Baptiste Reich <[email protected]>: >>>> 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 <[email protected]> >>>>> 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:[email protected] <msn%[email protected]> >>>>>> >>>>>> -----Original Message----- >>>>>> From: Marcel Offermans [mailto:[email protected]] >>>>>> Sent: 2010年11月19日 17:10 >>>>>> To: [email protected] >>>>>> 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 >>>>>>> <[email protected]> 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 >>>>>>> [email protected] >>>>>>> >>>>>>> >>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>> For additional commands, e-mail: [email protected] >>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [email protected] >>>>>> For additional commands, e-mail: [email protected] >>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>> >>> >>> -- >>> Karl Pauls >>> [email protected] >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

