I just created FELIX-800.
Many thanks
Ali.
Karl Pauls wrote:
Good catch. I didn't think about the possibility that somebody could
extend felix when I did this. Could you please create a JIRA for this.
I will fix it asap.
regards,
Karl
On Mon, Nov 3, 2008 at 6:36 AM, Ali Naddaf <[EMAIL PROTECTED]> wrote:
Hi Richard.
Thanks for your suggestion. I made the upgrade and understandably, it wasn't
without some fun; some constructors and methods had changed their
signatures, etc. I have got the application up and running with the new
version and haven't run into my old issue yet so hopefully that has been
resolved. I, however, noticed having some less serious exceptions in my log
and looked further into it. Basically, I am seeing an exception in the
URLHandlersBundleStreamHandler.openConnection(URL) method. Here is the part
I am referring to:
if (framework != null)
{
// TODO: optimize this to not use reflection if not needed
try
{
Class targetClass =
framework.getClass().getClassLoader().loadClass(
URLHandlersBundleURLConnection.class.getName());
return (URLConnection)
m_action.invoke(m_action.getConstructor(targetClass,
new Class[]{URL.class, framework.getClass()}),
new Object[]{url, framework});
}
catch (Exception ex)
{
throw new IOException(ex.getMessage());
}
}
throw new IOException("No framework context found");
The problem happens when reflection fails to find the appropriate
constructor and throws a NoSuchMethodException; here the targetClass
resolves to "org.apache.felix.framework.URLHandlersBundleURLConnection" and
the exception is:
java.lang.NoSuchMethodException:
org.apache.felix.framework.URLHandlersBundleURLConnection.<init>(java.net.URL,
org.simplecenter.application.SimpleCenterApplication)
Note that SimpleCenterApplicaion extends Felix and
URLHandlersBundleURLConnection has the constructor
URLHandlersBundleURLConnection(URL, Felix).
Any thoughts?
Thanks
Ali.
P.S. In the older version, it was not relying on the reflection and was
calling the URLHandlersBundleURLConnection(URL, Felix) directly.
Richard S. Hall wrote:
If you are using 0.8.0 of Felix, then you seriously need to upgrade. You
can get the version of Felix by starting it and typing "version" in the
Felix shell or by typing "ps" and looking at the version of the system
bundle.
If you really are using 0.8.0, then it is possible that this was related
to a bug from a while ago where Felix was not properly guarding class
definition with a lock. Try upgrading to the latest 1.2.2 release (1.4.0
will be coming soon too).
-> richard
Ali Naddaf wrote:
Hi Richard.
In the manifest of felix.jar I see "Bundle-Version: 0.8.0.incubator", so
is that the version you are asking for? As for what I was doing, this is a
multimedia application and I was trying to open a media file for playback. I
am trying to see how I can deterministically reproduce this but otherwise,
do yo have any suggestion as to how I can debug the issue?
Thanks,
Ali.
Richard S. Hall wrote:
Which version of Felix are you using?
What are you doing when this error occurs?
It certainly would be great to find some way to reproduce it. I am sure
it is explainable.
-> richard
Ali Naddaf wrote:
Hello all.
I have an OSGi based application (using Felix) that is under heavy
development and a few days ago, I started seeing the following exception
showing up in my logs:
java.lang.LinkageError: loader (instance of
org/apache/felix/framework/searchpolicy/ContentClassLoader): attempted
duplicate class definition for name: "org/simplecenter/upnp/av/DIDLParser"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at
org.apache.felix.framework.searchpolicy.ContentClassLoader.findClass(ContentClassLoader.java:149)
at
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClassFromModule(ContentClassLoader.java:51)
at
org.apache.felix.framework.searchpolicy.ContentLoaderImpl.getClass(ContentLoaderImpl.java:121)
at
org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:86)
at
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.searchImports(R4SearchPolicyCore.java:392)
at
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:353)
at
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:136)
at
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
at
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:70)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at
org.simplecenter.upnp.av.controlpoint.BaseAVTransportListener.parseMetaData(BaseAVTransportListener.java:87)
at
org.simplecenter.upnp.av.controlpoint.BaseAVTransportListener.change(BaseAVTransportListener.java:78)
at
org.simplecenter.upnp.av.controlpoint.LastChangeListener.parseStates(LastChangeListener.java:98)
at
org.simplecenter.upnp.av.controlpoint.LastChangeListener.parseEvent(LastChangeListener.java:74)
at
org.simplecenter.upnp.av.controlpoint.LastChangeListener.LastChangeChanged(LastChangeListener.java:45)
at
org.simplecenter.upnp.av.renderer.RendererAVTransport.LastChangeChanged(RendererAVTransport.java:48)
at
org.simplecenter.upnp.av.renderer.RendererDeviceInstance$1.sendEvent(RendererDeviceInstance.java:101)
at
org.simplecenter.upnp.av.renderer.LastChangeEventSender.flushEvents(LastChangeEventSender.java:122)
at
org.simplecenter.upnp.av.renderer.LastChangeEventSender.access$300(LastChangeEventSender.java:38)
at
org.simplecenter.upnp.av.renderer.LastChangeEventSender$EventTimer.run(LastChangeEventSender.java:101)
at java.lang.Thread.run(Unknown Source)
I cannot find any duplicate classes in my code and also this problem
doesn't show itself all the times, and yet I haven't been able to find
accurate reproduction steps. Anyhow, if any one has any suggestion as to
what this may mean and how I can debug that, it would be greatly
appreciated.
Many thanks
Ali
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]