Java.nio.file.FileSystemException: процесс не может получить доступ к файлу, поскольку он используется другим процессом
Я пишу программу, которая копирует themselve при первом выполнении в определенную папку, работающую в linux или windows.
В linux он работает отлично, но когда я пытаюсь сделать то же самое на окнах, я получаю следующую ошибку:
java.nio.file.FileSystemException: процесс не может получить доступ к файлу, потому что он используется другим процессом (в sun.nio.fs.WindowsException)
Итак, другой процесс - это сама программа, что я должен использовать, чтобы пропустить эту ошибку?
Мои строки кода:
public void installProgram (){
System.out.println("Doing Install...");
File fileToBeInstalled = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
try {
Files.move(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
} catch (IOException ex) {
MainClass.getMainClass(InstallerLinux.class.getName()).log(Level.SEVERE, null, ex);
}
}
Спасибо!
Ответы
Ответ 1
Ok,
Я не нашел идеального решения, но что-то...
try {
//Files.move(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
Files.copy(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
fileToBeInstalled.delete();
} catch (IOException ex) {
MainClass.getMainClass(InstallerLinux.class.getName()).log(Level.SEVERE, null, ex);
}
Эта копия правильно копирует файл и корректно удаляет оригинал только при выполнении linux.
Я думаю, что для этого мне нужно вызвать класс, используя загрузчик классов.