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]

Reply via email to