Может ли загруженный JAR быть удален Java-процессом?
Здравствуйте, у меня есть следующая проблема:
В процессе удаления я загружаю JAR (драйвер jdbc).
URL pDriverJar = jarToDelete.toURI().toURL();
URL[] lURLList = new URL[]{pDriverJar};
URLClassLoader lLoader = new URLClassLoader(lURLList, Thread.currentThread().getContextClassLoader());
Thread.currentThread().setContextClassLoader(lLoader);
Class<?> aClass = Class.forName("jdbc.Driver"); // was Oracle: oracle.jdbc.OracleDriver but should not be important
if(jarToDelete.delete()){
System.out.println("deleted");
}else {
jarToDelete.deleteOnExit();
}
После завершения JVM баночка все еще существует.
Как обходной путь, я создал временный файл и скопировал Jar в этот временный файл. Но теперь Tempfile не будет удален.
Я читал, что если ClassLoad это GC, загруженные банки могут быть удалены.
У кого-нибудь есть идея, как удалить этот файл?