2015-11-25 134 views
5

最初に実行したときに特定のフォルダにコピーして、LinuxまたはWindowsで作業するプログラムを作成しています。 Linuxでは
それは完璧に動作しますが、私は、私は次のエラーウィンドウズ上で同じことをしようとすると:だからjava.nio.file.FileSystemException:プロセスが別のプロセスで使用されているため、ファイルにアクセスできません。

java.nio.file.FileSystemException: The process cannot access the file because it is being used by another process (in 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); 

    } 
} 

ありがとう!

+0

さあは、本当に誰もがそれについて知っていますか?何かお考えですか? : – selan

+0

OMGこれは非常に難しい質問ですか?:(私はこれが共通の問題だと思ったことを意味します... – selan

答えて

3

[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の実行に正しく元を消去します。

私はクラスローダを使用してクラスを呼び出す必要があることを行うために考える

..

+0

Thxメイト!私は同じ問題を抱えていましたが、私はあなたの答えで私の古いコードを置き換えます。それは今働いているようだ... –

関連する問題