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]