Ola,
Estou tendo o seguinte problema com o uso do ClassLoader …
Tenho um sistema rodando em java … e utilizo o ClassLoader para executar um .Jar Externo … até ae blz ele executa tudo certinho … o problema é que depois que eu executo … eu gostaria de poder excluir esse arquivo .Jar … mas ele fica preso pelo VM,
eu só consigo excluir ele depois que encerro minha aplicação … mas quem deveria excluir é a própria aplicação … alguem tem alguma dica … o código que eu executo é esse:
try {
URL[] allLocations = {new URL("jar:file:" +
"temp_terminal_" + new DecimalFormat("000000").format(parametrosInternos.getCodigoTerminal()) + "_" +
descricaoGrupo.toLowerCase().replace(" ", "_") + "_" +
new DecimalFormat("000000").format(codigoProcesso) +
"/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) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Problemas ao Executar Processo Externo: " +
"\nGrupo.: " + descricaoGrupo +
"\nCódigo: " + codigoProcesso,
"MaxCtrl", JOptionPane.WARNING_MESSAGE);
} finally {
System.gc();
}