Ali Naddaf 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.
Yeah, I think this will resolve it. Sorry for the pain when moving to
1.2.2, but it should be worth it, since it is drastically improved over
0.8.0. We are working on a 1.4.0 release that will also change the API
for those embedding Felix, but that move should be much easier than from
0.8.0 to 1.2.2. The new API is a proposal for a new standard framework
API, so hopefully the embedding API will become more stable and work
across framework implementations.
-> richard
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]