Hi all,
I am storing the required test.jar file in the /sdcard. I want to
load it dynamically at runtime and want to execute a function xyz()
resides in that. For this purpose
I had written following code ,
But got ClassCastException : dalvik.system.PathClassLoader
Following is my code ,
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class Collabera extends Activity {
/** Called when the activity is first created. */
private static final Class[] parameters = new Class[] { URL.class };
public static void loadURLClass(String classPathURL) throws
IOException {
File f = new File(classPathURL);
URL url = f.toURL();
URLClassLoader systemLoader = (URLClassLoader) ClassLoader
.getSystemClassLoader();
Class systemLoaderClass = URLClassLoader.class;
try {
Method method = systemLoaderClass.getDeclaredMethod("addURL",
parameters);
method.setAccessible(true);
method.invoke(systemLoader, new Object[] { url });
} catch (Throwable t) {
t.printStackTrace();
throw new IOException(
"Error, could not add URL to system classloader");
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("See","**************Before Loading Class
Path**************");
try {
Class.forName("test.Test1");
} catch (ClassNotFoundException e) {
System.out.println(" Test Class Not Found ....");
}
Log.i("See","**************After Loading Class
Path**************");
try {
loadURLClass("//sdcard//test.jar");
Class c = Class.forName("test.Test1");
Log.i("See"," Test Class Found ....");
Method method = c.getMethod("xyz", null);
Object o = c.newInstance();
String s = (String) method.invoke(o);
Log.i("See","Got method: " + s);
} catch (ClassNotFoundException e) {
System.out.println(" Test Class Not Found ....");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
Please help. Thanks in advance.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---