You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/07/07 22:49:10 UTC
svn commit: r791974 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
Author: rickhall
Date: Tue Jul 7 20:49:10 2009
New Revision: 791974
URL: http://svn.apache.org/viewvc?rev=791974&view=rev
Log:
Implement workaround for Android to avoid setting parent class
loader to null. (FELIX-1193)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java?rev=791974&r1=791973&r2=791974&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java Tue Jul 7 20:49:10 2009
@@ -100,20 +100,23 @@
// Statically create the class loader for boot delegation.
static
{
+ ClassLoader cl = null;
try
{
- ClassLoader cl = null;
Constructor ctor = m_secureAction.getDeclaredConstructor(
SecureClassLoader.class, new Class[] { ClassLoader.class });
m_secureAction.setAccesssible(ctor);
cl = (ClassLoader) m_secureAction.invoke(ctor, new Object[] { null });
- m_bootClassLoader = cl;
}
catch (Exception ex)
{
- throw new RuntimeException(
- "Problem creating boot delegation class loader.", ex);
+ // On Android we get an exception if we set the parent class loader
+ // to null, so we will work around that case by setting the parent
+ // class loader to the system class loader in getClassLoader() below.
+ cl = null;
+ System.err.println("Problem creating boot delegation class loader: " + ex);
}
+ m_bootClassLoader = cl;
}
// Boot delegation packages.
@@ -1282,6 +1285,13 @@
{
parent = ModuleImpl.class.getClassLoader();
}
+ // On Android we cannot set the parent class loader to be null, so
+ // we special case that situation here and set it to the system
+ // class loader by default instead, which is not really spec.
+ else if (m_bootClassLoader == null)
+ {
+ parent = ClassLoader.getSystemClassLoader();
+ }
else
{
parent = null;