felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: Felix compiler version & Android dx
Date Tue, 04 May 2010 14:25:26 GMT
On 5/4/10 10:19, Jackson, Bruce wrote:
> Yes, that's easier said than done!
> I seem to remember that the was no single place where you could set the
> compiler version to use for building Felix. Is that correct?
>    

You should just be able to edit the Event Admin pom.xml file to include 
this in its plugins section, no?

-> richard

>
> On 04/05/2010 12:54, "Karl Pauls"<karlpauls@gmail.com>  wrote:
>
>    
>> And like before, make sure you don't have other messages like "class
>> resolved by unexpected dex" in the log ...
>>
>> regards,
>>
>> Karl
>>
>> On Tue, May 4, 2010 at 1:33 PM, Karl Pauls<karlpauls@gmail.com>  wrote:
>>      
>>> Well, this should be easy enough to test, right? Just re-compile the
>>> eventadmin and see whether that fixes the issue or not - if it does,
>>> that would be really useful to know :-)
>>>
>>> regards,
>>>
>>> Karl
>>>
>>> On Tue, May 4, 2010 at 1:23 PM, Jackson, Bruce<brucej@qualcomm.com>  wrote:
>>>        
>>>> Hi All
>>>>
>>>> Some time back, we had a discussion about the default compiler version used
>>>> to build Felix, and whether this was compatible with the requirements of
>>>> Android.
>>>>
>>>> I noted that when you dx the bundle jars produced by the regular Felix
>>>> build, you get a whole collection of warning of the the form:
>>>>
>>>> $ dx --dex --output=classes.dex org.apache.felix.eventadmin-1.2.2.jar
>>>> warning: Ignoring InnerClasses attribute for an anonymous inner class that
>>>> doesn't come with an associated EnclosingMethod attribute. (This class was
>>>> probably produced by a broken compiler.)
>>>>
>>>> ...for example. We debated this, and decided that these were just warning
>>>> and not a real problem. However, now that I have a working Felix framework
>>>> on Android, I find that when I load and start the EventAdmin bundle, I find
>>>> that it fails to start with the following message in the log:
>>>>
>>>> 05-04 12:01:26.853: WARN/System.err(4682):
>>>> org.osgi.framework.BundleException: Activator start error in bundle
>>>> org.apache.felix.eventadmin [5].
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.Felix.activateBundle(Felix.java:1807)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.Felix.startBundle(Felix.java:1682)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:905)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:892)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> com.skifta.android.client.SkiftaService.startOSGi(SkiftaService.java:437)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> com.skifta.android.client.SkiftaService.init(SkiftaService.java:174)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> com.skifta.android.client.SkiftaService.onCreate(SkiftaService.java:166)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.app.ActivityThread.handleCreateService(ActivityThread.java:2894)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.app.ActivityThread.access$3200(ActivityThread.java:126)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1986)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.os.Handler.dispatchMessage(Handler.java:99)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.os.Looper.loop(Looper.java:123)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> android.app.ActivityThread.main(ActivityThread.java:4595)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> java.lang.reflect.Method.invokeNative(Native Method)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> java.lang.reflect.Method.invoke(Method.java:521)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:8
>>>> 60)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> dalvik.system.NativeStart.main(Native Method)
>>>> 05-04 12:01:26.853: WARN/System.err(4682): Caused by:
>>>> java.lang.NoClassDefFoundError:
>>>> org.apache.felix.eventadmin.impl.handler.BlacklistingHandlerTasks$1
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.eventadmin.impl.handler.BlacklistingHandlerTasks.<init>(Bla
>>>> cklistingHandlerTasks.java:223)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.eventadmin.impl.Configuration.start(Configuration.java:293)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>>
>>>>          
> org.apache.felix.eventadmin.impl.Configuration.<init>(Configuration.java:152>>>
> )
>    
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.eventadmin.impl.Activator.start(Activator.java:65)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.jav
>>>> a:661)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     at
>>>> org.apache.felix.framework.Felix.activateBundle(Felix.java:1760)
>>>> 05-04 12:01:26.853: WARN/System.err(4682):     ... 17 more
>>>>
>>>> Looking at the class in question (BlacklistingHandlerTasks:223) I see that
>>>> this is a use of an anonymous inner class:
>>>>
>>>> private final EventHandler m_nullEventHandler = new EventHandler()
>>>>     {
>>>>         /**
>>>>          * This is a null object that is supposed to do nothing at this
>>>> point.
>>>>          *
>>>>          * @param event an event that is not used
>>>>          */
>>>>        public void handleEvent(final Event event)
>>>>         {
>>>>             // This is a null object that is supposed to do nothing at this
>>>>            // point. This is used once a EventHandler is requested for a
>>>>            // servicereference that is either stale (i.e., unregistered)
or
>>>>            // blacklisted.
>>>>        }
>>>>     };
>>>>
>>>> Is this an example of the problem we were discussing a couple of weeks ago,
>>>> where dx canĀ¹t produce correct copde because the compiler version that was
>>>> used to create the bundle was pre-1.5 do you think?
>>>>
>>>> Thanks
>>>>
>>>> Bruce
>>>>
>>>>          
>>>
>>>
>>> --
>>> Karl Pauls
>>> karlpauls@gmail.com
>>>
>>>        
>>
>>      
>    

Mime
View raw message