Adicionar JAR ao ClassPath dinamicamente

4 respostas
rodrigopmatias

Ai pessoal estou precisando fazer uma aplicação na qual o classpath vai sendo modificado dinamicamente, na verdade o que ocorre e que eu preciso adicionar .jar dinamicamente e nao queria precisar reiniciar o serviço para isto, tem como fazer alguem ja fez?

4 Respostas

fabiofalci

ai… tres metodo que pode te ajudar…

public static void addToClasspath(String s) throws IOException {
        File f = new File(s);
        addToClasspath(f);
    }

    public static void addToClasspath(File f) throws IOException {
        addToClasspath(f.toURL());
    }

    public static void addToClasspath(URL u) throws IOException {
        URLClassLoader sysloader = (URLClassLoader) ClassLoader
                .getSystemClassLoader();
        Class sysclass = URLClassLoader.class;

        try {
            Method method = sysclass.getDeclaredMethod("addURL", parameters);
            method.setAccessible(true);
            method.invoke(sysloader, new Object[] { u });
        } catch (Throwable t) {
            t.printStackTrace();
            throw new IOException(
                    "Error, could not add URL to system classloader");
        }

    }
rodrigopmatias

cara boa dica, to tentando concluir ai mas nao estou conseguindo ver o que é o argumento parameters.

rodrigopmatias

tava faltando somente

Class parameters = URL.class;

fabiofalci

Isso!!! Esqueci

Na verdade o que tem aqui eh

private static final Class[] parameters = new Class[] { URL.class };
Criado 29 de junho de 2006
Ultima resposta 29 de jun. de 2006
Respostas 4
Participantes 2