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?


On 04/05/2010 12:54, "Karl Pauls" <karlpa...@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 <karlpa...@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 <bru...@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
>> karlpa...@gmail.com
>> 
> 
> 

Reply via email to