Android - загрузка внешнего .jar во время выполнения

Я хочу загрузить внешнюю библиотеку во время выполнения.

Вот источник:

import java.lang.*;
import java.net.*;
import java.io.*;

public class Main {
    public static void main (String args[]) throws Exception {
        System.out.println("Load support library");
        File file = new File("/sdcard/lib/android-support-v4.jar");
        URL url = file.toURI().toURL();
        URL[] urls = {url};
        URLClassLoader cl = new URLClassLoader(urls);
        Class clazz = cl.loadClass("android.support.v4.view.ViewCompat");
    }
}

Эта библиотека является библиотекой поддержки Google. Он расположен по адресу "/sdcard/lib/android-support-v4.jar".

Я хочу получить класс android.support.v4.view.ViewCompat, но источник всегда генерирует исключение ClassNotFoundException.


person Astro    schedule 28.11.2015    source источник


Ответы (1)


Как насчет инфраструктуры загрузчика классов JCL. пример использования:

JarClassLoader jcl = new JarClassLoader();  
jcl.add("myjar.jar"); //Load jar file  
jcl.add(new URL("http://myserver.com/myjar.jar")); //Load jar from a URL  
jcl.add(new FileInputStream("myotherjar.jar")); //Load jar file from stream  
jcl.add("myclassfolder/"); //Load class folder  
jcl.add("myjarlib/"); //Recursively load all jar files in the folder/sub-folder(s)  

JclObjectFactory factory = JclObjectFactory.getInstance();  

//Create object of loaded class  
Object obj = factory.create(jcl,"mypackage.MyClass");
person raj    schedule 28.11.2015
comment
Нет ли возможности загрузить внешнюю библиотеку без использования другого фреймворка? Я не хочу добавлять другую библиотеку .. - person Astro; 28.11.2015