That was just the plain android adb logcat output. It works even if
you start your own vm.

regards,

Karl

On Mon, Feb 22, 2010 at 12:09 PM, Jackson, Bruce <bru...@qualcomm.com> wrote:
> When I was discussing with Karl the other day, he provided me with the debug
> output below showing the classloading behaviour. Does anyone know if this
> came from Felix or Dalvik debug tools, and whether I can see the
> classloading behavior in Felix?
>
>
> On 17/02/2010 16:49, "Karl Pauls" <karlpa...@gmail.com> wrote:
>
>> As I said, it will only happen if you have the importing classes and
>> the exporting classes dexed into the same classes.dex. In your jdom
>> case that should not happen as the embedded jar will have it's own
>> classes.dex so that the "root" classes.dex of your bundle is different
>> from the embedded one (again, that is the hack you can use to work
>> around this issue in general).
>>
>> regards,
>>
>> Karl
>>
>> On Wed, Feb 17, 2010 at 5:32 PM, Jackson, Bruce <bru...@qualcomm.com> wrote:
>>> Hi Karl
>>>
>>> That's great, thanks! I've got it working too now. Obviously the
>>> classloading mechanism in Dalvik is different to a regular jvm, as you don't
>>> see this problem in Felix on the JVM.
>>>
>>> Is this likely to cause a similar problem in bundles which have been built
>>> with an embedded jar (imagine I place something like jdom into a bundle) and
>>> the framework also has a jdom bundle installed?
>>>
>>> Thanks again
>>>
>>> Bruce
>>>
>>> On 16/02/2010 23:40, "Karl Pauls" <karlpa...@gmail.com> wrote:
>>>
>>>> Wait, i got it working (i.e., i get to the point where your example
>>>> fails). The reason is this:
>>>>
>>>> W/dalvikvm(  326): Class resolved by unexpected DEX:
>>>> Lorg/mortbay/jetty/servlet/ServletHandler$Context;(0x400a0288):0x68578
>>>> ref [Ljavax/servlet/ServletContext;]
>>>> Ljavax/servlet/ServletContext;(0x4002eec0):0x5ef48
>>>> W/dalvikvm(  326): (Lorg/mortbay/jetty/servlet/ServletHandler$Context;
>>>> had used a different Ljavax/servlet/ServletContext; during
>>>> pre-verification)
>>>> I/dalvikvm(  326): Failed resolving
>>>> Lorg/mortbay/jetty/servlet/ServletHandler$Context; interface 195
>>>> 'Ljavax/servlet/ServletContext;'
>>>> W/dalvikvm(  326): Link of class
>>>> 'Lorg/mortbay/jetty/servlet/ServletHandler$Context;' failed
>>>> E/dalvikvm(  326): ERROR: defineClass(0x400a0288,
>>>> org.mortbay.jetty.servlet.ServletHandler$Context, 0x401d6268, 0, 6067,
>>>> 0x401b4b28)
>>>>
>>>> The problem is as follows: the http jetty bundle contains its own
>>>> version of the javax.servlet packages. When you are dexing that
>>>> bundle. You are including this version inside the classes.dex. Now, in
>>>> your set-up, you are importing them at runtime from the javax.servlet
>>>> bundle. That causes the above problem (as the dex is already bound).
>>>> If you uninstall the javax.servlet bundle (and change the import
>>>> version constraint inside your test bundle for the javax.servlet*
>>>> packages to be 2.3.0 instead of 2.4.0 - in which case it will resolve
>>>> to the http bundle). Then it works:
>>>>
>>>> -> ps
>>>> START LEVEL 1
>>>>    ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (2.0.3)
>>>> [   1] [Active     ] [    1] Apache Felix Shell Service (1.0.2)
>>>> [   2] [Active     ] [    1] Apache Felix Shell TUI (1.0.2)
>>>> [   5] [Active     ] [    1] Apache Felix Log Service (1.0.0)
>>>> [   6] [Active     ] [    1] HTTP Service (0.8.0.SNAPSHOT)
>>>> [   7] [Active     ] [    1] Apache Felix Configuration Admin Service
>>>> (1.2.4)
>>>> [  10] [Installed  ] [    1] Httptest (1.0.0.201002151713)
>>>> -> start 10
>>>> Feb 16, 2010 11:29:22 PM java.io.BufferedWriter <init>
>>>> INFO: Default buffer size used in BufferedWriter constructor. It would
>>>> be better to be explicit if an 8k-char buffer is required.
>>>> DEBUG: WIRE: 10.0 -> javax.servlet -> 6.0
>>>> DEBUG: WIRE: 10.0 -> org.osgi.service.http -> 6.0
>>>> DEBUG: WIRE: 10.0 -> org.osgi.framework -> 0
>>>> DEBUG: WIRE: 10.0 -> javax.servlet.http -> 6.0
>>>> DEBUG: javax/servlet/http/LocalStrings_en_US.properties
>>>> DEBUG: javax/servlet/http/LocalStrings_en.properties
>>>> DEBUG: org/mortbay/http/mime_en_US.properties
>>>> DEBUG: org/mortbay/http/mime_en.properties
>>>> DEBUG: org/mortbay/http/encoding_en_US.properties
>>>> DEBUG: org/mortbay/http/encoding_en.properties
>>>> 23:29:23.644 EVENT  Started ServletHttpContext[/]
>>>>
>>>> The point is this: if you are dexing a bunch of classes, they will
>>>> already know about each other and then can't be imported from some
>>>> place else. The workaround in this case would be to remove the
>>>> javax.servlet* packages from the http bundle in the first place or (in
>>>> case you need the optionality) make them a separate jar, dex it, and
>>>> put it on the bundleclasspath of the http bundle (this way, the rest
>>>> of the http bundle classes are not dexed together with the imported
>>>> javax.servlet classes in the same dex).
>>>>
>>>> No bug in felix or a problem with the complier level. Its just one of
>>>> the points where dalvik is working differently than java... sorry,
>>>> nothing i can do about that. You will need to be careful when you are
>>>> dexing bundles to not dex classes inside the bundle that can be
>>>> substituted by an import together with the other classes of the bundle
>>>> (either remove them or create a dexed jar on the bundleclasspath for
>>>> these classes).
>>>>
>>>> regards,
>>>>
>>>> Karl
>>>>
>>>> On Tue, Feb 16, 2010 at 4:37 PM, Jackson, Bruce <bru...@qualcomm.com> 
>>>> wrote:
>>>>> Hi Karl
>>>>>
>>>>> I just tried that, and it makes no difference.
>>>>> I'll mail you the bundles as discussed in a couple of minutes.
>>>>>
>>>>> Thanks
>>>>>
>>>>> Bruce
>>>>>
>>>>>
>>>>> On 16/02/2010 15:33, "Karl Pauls" <karlpa...@gmail.com> wrote:
>>>>>
>>>>>> Btw. can you first try to set the following property:
>>>>>>
>>>>>> org.osgi.framework.bundle.parent=framework
>>>>>>
>>>>>> and see whether that makes a difference on android?
>>>>>>
>>>>>> regards,
>>>>>>
>>>>>> Karl
>>>>>>
>>>>>> On Tue, Feb 16, 2010 at 2:11 PM, Karl Pauls <karlpa...@gmail.com> wrote:
>>>>>>> Yeah, if you could zip your project and send it to me in private mail
>>>>>>> (list probably wont accept it) - that would be a good start.
>>>>>>>
>>>>>>> regards,
>>>>>>>
>>>>>>> Karl
>>>>>>>
>>>>>>> On Tue, Feb 16, 2010 at 1:53 PM, Jackson, Bruce <bru...@qualcomm.com>
>>>>>>> wrote:
>>>>>>>> Thanks Karl. Would it help if I zipped the jetty and test bundle I'm
>>>>>>>> using?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Bruce
>>>>>>>>
>>>>>>>>
>>>>>>>> On 16/02/2010 12:51, "Karl Pauls" <karlpa...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> I'll try to look into it tonight.
>>>>>>>>>
>>>>>>>>> regards,
>>>>>>>>>
>>>>>>>>> Karl
>>>>>>>>>
>>>>>>>>> On Tue, Feb 16, 2010 at 12:54 PM, Jackson, Bruce <bru...@qualcomm.com>
>>>>>>>>> wrote:
>>>>>>>>>> Further to this, I have explored the problem some more. Using the
>>>>>>>>>> dedexer
>>>>>>>>>> tool (http://dedexer.sourceforge.net/) I can examine the classes that
>>>>>>>>>> have
>>>>>>>>>> been put into the classes.dex in the Jetty Http service bundle. I can
>>>>>>>>>> see
>>>>>>>>>> in
>>>>>>>>>> the bundle that I do indeed have the required classes in the dex 
>>>>>>>>>> file:
>>>>>>>>>>
>>>>>>>>>> Processing org/mortbay/jetty/servlet/ServletHandler
>>>>>>>>>> Processing org/mortbay/jetty/servlet/ServletHolder$Config
>>>>>>>>>> Processing org/mortbay/jetty/servlet/OsgiServletHttpContext
>>>>>>>>>> Processing org/mortbay/jetty/servlet/ServletHandler$Context
>>>>>>>>>>
>>>>>>>>>> This is a mystery. Any ideas anyone?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 16/02/2010 10:12, "Bruce Jackson" <bru...@qualcomm.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> org.mortbay.jetty.servlet.ServletHandler
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Karl Pauls
>>>>>>> karlpa...@gmail.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



-- 
Karl Pauls
karlpa...@gmail.com

Reply via email to