ClassLoader.loadclass Deixa Arquivo Aberto

Boa Noite,

estou tentando fazer uma rotina que abra um .jar e carregue para dentro do meu software, apenas para executa-lo, depois disso quero exclui-lo …

consegui fazer isso com o seguinte código:

        try {
            URL[] allLocations = {new URL("jar:file:" +
                                          "temp_terminal_" + new DecimalFormat("000000").format(parametrosInternos.getCodigoTerminal()) +
                                          "_processos/dist/" + "ProcessoExterno.jar!/")}; 
            
            ClassLoader classLoader = new URLClassLoader(allLocations);
            
            Class classExterno = classLoader.loadClass("maxctrl.processoexterno.ExecutarProcesso");
            
            Object objeto = classExterno.newInstance();
            Method method = classExterno.getMethod("ExecutarProcesso", ParametrosInternos.class);
            method.invoke(objeto, parametrosInternos);

        } catch (Exception e) {

        }

funciona certinho, executa perfeitamente, o problema é que eu não consigo apagar o arquivo .jar pois ele fica em uso …

Alguem conhece alguma forma de fazer isso funcionar … ???

Infelizmente você só poderá fazer isso a partir do Java 7.

http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html#close()

Note na documentação: