2015-11-25 50 views
5

Bir linux veya windows üzerinde çalışan belirli bir klasöre kopyalamak için bir program yazıyor. Linux kullanımında
o mükemmel çalışıyor ama çalıştığınızda i aşağıdaki hatayı alıyorum pencerelerde aynı şeyi: Ben bu hatayı atlamak için kullanmak gerektiğinijava.nio.file.FileSystemException: Başka bir işlem tarafından kullanıldığından işlem dosyaya erişemiyor çünkü

java.nio.file.FileSystemException: The process cannot access the file because it is being used by another process (in sun.nio.fs.WindowsException)

Yani, diğer süreç programı kendisidir?

Kodum hatları şunlardır:

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

    } 
} 

teşekkürler!

+0

Haydi, gerçekten bunu bilen var mı? Lütfen herhangi bir fikrin var mı? :( – selan

+0

OMG bu kadar zor bir soru mu ?:(Bunun sık rastlanan bir sorun olduğunu düşündüm ... – selan

cevap

3

Tamam, Ben mükemmel bir çözüm ama bir şey ...

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

} 

Bu kopya dosyayı doğru bulundu ve sadece linux yürütme doğru orijinal siler yok.

Bunun için bir sınıf yükleyici kullanarak sınıfı çağırmaya ihtiyacım var diye düşünüyorum.

+0

10 Thx dostum Aynı problemi yaşadım, ama eski kod parçamın yerine cevabını verdim. Görünüşe göre şu an çalışıyor ... –

İlgili konular