我正在编写一个程序,将它们在第一次执行时复制到一个特定的文件夹中,可以在linux或Windows中工作。
在linux中,它工作正常,但是当我尝试在Windows上执行相同操作时,出现以下错误:



因此,另一个过程是程序本身,我应该使用什么来跳过此错误?

我的代码行是:

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执行时才能正确擦除原始文件。

我想为此,我需要使用类加载器来调用该类。

09-26 17:10