Подтвердить что ты не робот

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);

    }
} 

Спасибо!

4b9b3361

Ответ 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.

Я думаю, что для этого мне нужно вызвать класс, используя загрузчик классов.