java.nio.file.FileSystemException:进程无法访问该文件,因为另一个进程正在使用该文件



我正在编写一个程序,该程序在第一次执行时将自己复制到一个特定的文件夹中,在linux或windows中工作
在linux中,它运行得很好,但当我尝试在windows上执行同样的操作时,我会收到以下错误:

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

谢谢!

好的,我没有找到一个完美的解决方案,但是。。。

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执行时正确地复制文件并正确地擦除原始文件。

我认为要做到这一点,我需要使用类加载器来调用类。。

相关内容

  • 没有找到相关文章

最新更新