# ZIP FileSystem unter Windows wirft exception



## rheiger (12. Jun 2012)

Ich wollte mal das neue Feature des ZIP FileSystems von Java7 testen. Interessanterweise hat das unter Linux perfekt funktioniert, hingegen unter Windows wirft das Programm eine Exception:

Das Programm:

[JAVA=1]
package testing.ziptest;

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

    public static void main(String[] args) throws IOException {
        String zipFileName = "test.zip";
        if (args != null && args.length > 0) {
            zipFileName = args[0];
        }
        FileSystem fs = FileSystems.newFileSystem(Paths.get(zipFileName), null);
        Iterable<Path> roots = fs.getRootDirectories();
        for (Path dir : roots) {
            dirWalk(dir, 0);
        }
    }

    private static void dirWalk(Path dir, int level) throws IOException {
        if (dir == null) {
            return;
        }
        System.out.println(" " + level + " :: " + "'" + dir.toString() + "'");
        if (Files.notExists(dir)) {
            return;
        }
        if (Files.isDirectory(dir)) {
            DirectoryStream<Path> ds = Files.newDirectoryStream(dir);
            for (Path child : ds) {
                dirWalk(child, level + 1);
            }
        }
    }
}
[/code]

Hier das Resultat unter Windows7:

```
c:\temp>java -jar ziptest.jar ziptest.jar
Exception in thread "main" java.io.IOException: Unable to get effective rights from ACL: Der Vorgang wurde erfolgreich beendet.

        at sun.nio.fs.WindowsFileSystemProvider.getEffectiveAccess(Unknown Source)
        at sun.nio.fs.WindowsFileSystemProvider.checkAccess(Unknown Source)
        at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:124)
        at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
        at java.nio.file.FileSystems.newFileSystem(Unknown Source)
        at testing.ziptest.Main.main(Main.java:18)

c:\temp>
```

Unter Linux läuft's bestens:

```
pcsg:~/JavaTests/zipfile/dist $ java -jar ziptest.jar ziptest.jar
 0 :: '/'
 1 :: '/testing/'
 2 :: '/testing/ziptest/'
 3 :: '/testing/ziptest/Main.class'
 1 :: '/META-INF/'
 2 :: '/META-INF/MANIFEST.MF'
pcsg:~/JavaTests/zipfile/dist $
```

Ist das ein bekanntes Problem von Windows7? Könnte das etwas mit der Spracheinstellung von Windows zu tun haben? Eigenartigerweise habe ich nirgends einen Hinweis gefunden, dass hier Probleme vorliegen könnten. Dasselbe Resultat finde ich auch, wenn ich das entsprechende Demo Programm von ORACLE aus dem JDK teste.

Ich bin für jeden Hinweis sehr dankbar!


----------



## Gast2 (12. Jun 2012)

> Unable to get effective rights from ACL


Da spielt dir die Rechteverwaltung von Windows rein. Java scheint da irgendwelche Rechte nicht zu bekommen. Versuch das ganze mal in deinem Userordner oder führe das als Admin aus.


----------



## rheiger (12. Jun 2012)

Danke. Hatte auch schon sowas vermutet. Im Heimordner ausgeführt erhalte ich dasselbe Resultat, also die Exception. Wie ich unter Windows als Administrator eine Shell kriege weiss ich leider nicht. Mein User hat allerdings Administrator-Status. Eigentlich ist die Fehlermeldung recht widersinning. Denn offenbar konnte das Programm durch die jvm ja geladen werden. Da wird das Betriebssystem doch auch schon die ACLs prüfen wollen...


----------



## Gast2 (12. Jun 2012)

Vielleicht hilft dir das:
Starten der Windows-7 cmd.exe (Eingabeaufforderung) im Administratormodus?

Vermutlich werden erst beim Erstellen des FileSystems zusätzliche Rechte angefordert die Windows dann verweigert.


----------



## rheiger (12. Jun 2012)

Danke für den Hinweis. Konnte nun cmd.exe als Administrator ausführen. Habe aber leider immer noch die identische Fehlermeldung (siehe Printscreen im Anhang). Es ist verhext.


----------



## rheiger (12. Jun 2012)

Jetzt verstehe ich die Welt nicht mehr. Daselbe Programm auf einem dritten PC, ebenfalls mit Windows7 ultimate, funktioniert einwandfrei. Auf den anderen beiden nicht. OK, nun bin ich gefordert das Setup der verschiedenen Systeme sorgfältig zu überprüfen. Falls ich was herausfinde werde ich das hier nachliefern.

Besten Dank auf jeden Fall. Ich werde das Problem auf "gelöst" setzen.


----------



## rheiger (12. Jun 2012)

Wow! Ich habe die Ursache reproduzierbar gefunden :toll:! Sowas blödes auch.

Folgendes ist passiert: Ich habe die Angewohnheit meine Systeme 
	
	
	
	





```
englisch
```
 aufzusetzen. Der von mir genutzte User hatte allerdings als Anzeigesprache 
	
	
	
	





```
deutsch
```
 eingestellt. Der andere Rechner auf dem es nicht funktionierte war gerade andersrum, also Anmeldefenster 
	
	
	
	





```
deutsch
```
 und Anzeigesprache 
	
	
	
	





```
englisch
```
.

Es funktioniert sowohl 
	
	
	
	





```
englisch
```
, als auch 
	
	
	
	





```
deutsch
```
 korrekt, *vorausgesetzt* Anmeldebildschirm *und* Anzeigesprache sind *gleich* konfiguriert. :applaus:

Sowas ist in keinem Manual zu finden und wohl auch nicht zu googlen...


----------



## stevy (10. Okt 2012)

Ich habe dasselbe Problem. 
Allerdings sind beide Systeme Windows 7 Enterprise Deutsch und auch die Anzeigesprache ist bei beiden Deutsch.


----------

