Process в Java не закрывает файл после компиляции
Проблема в следующем: я использую класс Process, полученных их Runtime.getRuntime() выполняю команду javac -cp ...;... ... ... для компиляции двух файлов с зависимостью от библиотек (ниже представлен код) и так как они мне нужны после комплияции небольшое количество времени, то желательно все эти скомпилированные файлы удалять, но появилась проблема в том, что Process блокирует скомпилированные файлы и не дает ничего с ними сделать, пока я не остановлю приложение.
Перепробовал всё, что касается закрытия чего-либо — не помогает. Всё равно при попытки с ним что-то сделать получаю java.nio.file.FileSystemException: src\main\resources\classes\12bad837-9d23-43ba-ac43-c80eda1dca1b\Upper.class: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. System.gc() кстати говоря иногда помогал, но не всегда. Во всяком случае использовать его постоянно не хочу.
Ниже код, который это делает.
Process process = Runtime.getRuntime().exec(
"javac -cp " + modulesDirectory + "junit.jar;" + modulesDirectory + "hamcrest.jar "
+ className + " " + testClassName
);
Ответы (2 шт):
попробуйте.
process.waitFor(10, TimeUnit.SECONDS);
process.waitFor() - do the current thread to wait until the process dont terminated
process.destroy(); // - kill the process
process.destroyForcibly()-forcibly kill the process
такой вариант пробовали??
process.destroy();
File file = new File(C:\\...)
file.delete();