myślę, że to jest rzeczywiście niemożliwe, aby utrzymać prawidłowe uprawnienia.
Uprawnienia są bardzo specyficzne dla systemu operacyjnego: podczas gdy uprawnienia pliku POSIX pozwalają użytkownikowi ustawić, czy można czytać, pisać lub wykonywać plik dla właściciela pliku, grupy i innych, system plików NTFS ma podobny system, ale koncepcja dla zezwolenia na wykonanie jest niedorozwinięte. A wczesny system plików FAT/FAT32, w ogóle nie ma uprawnień do plików (część z atrybutu tylko do odczytu).
Będąc cross-platform, byłoby trudne dla Java, aby ustawić uprawnienia właściwie na nowo utworzonych plików (rozpakowane) w zależności od bazowego OS ....
Powiedział, że Java 6 ma nowy java .io.File klasy, która pozwala na ustawienie uprawnień (metodami takimi jak setExecutable(), setReadable(), etc ... zobacz http://java.sun.com/javase/6/docs/api/java/io/File.html)
Te pomogły mi bardzo, szczególnie setExecutable(), który był moim głównym zainteresowanym kiedy trzeba rozpakować pliki wykonywalne w systemie plików Linux. I nie musisz martwić się o to, jaki system operacyjny jest uruchomiony, ponieważ ta metoda po prostu nie zrobi niczego, jeśli działa pod Windows lub innymi systemami bez koncepcji plików wykonywalnych.
Wiem, że to raczej stary post, ale czy rozwiązałeś ten problem? Mam teraz ten sam problem; Wygląda na to, że jak na razie wygląda tylko plik wykonywalny ... kiedy rozpakowuję go "ręcznie", to zgoda jest poprawna. – dm76
Nie rozwiązałem go w rzeczywistości. Ostatnim moim pomysłem było odciągnięcie zadania mrównego Apache'a od manipulowania plikami zip i określenia, co robią. –
Ant może to zrobić tylko od 1.8, używając nowej funkcji Java.io.File w java 6 (zobacz moją odpowiedź poniżej) – dm76