Получение FileSystemException «Требуемая привилегия не удерживается клиентом» с использованием Files.createSymbolicLink в Play Framework - PullRequest
18 голосов
/ 22 ноября 2011

Я пытаюсь использовать новый метод Java 7 Files.createSymbolicLink () в Play!Framework, и я получил следующее исключение:

RuntimeException occured : java.nio.file.FileSystemException: c:\work\foo\bar:
A required privilege is not held by the client.

Это мое первое знакомство с моделью разрешений Java, поэтому я понимаю, что происходит, но пока не знаю, как это исправить (хотелось бычтобы предоставить контроллерам больше разрешений).

Если кто-то может ответить здесь быстрее, чем я найду ответ, я (и будущие читатели) буду благодарен.

Ответы [ 2 ]

11 голосов
/ 22 ноября 2011

Это не проблема с разрешениями Java, а проблема с разрешениями операционной системы. См. FileSystemException .

Подклассами FileSystemException являются: AccessDeniedException, AtomicMoveNotSupportedException, DirectoryNotEmptyException, FileAlreadyExistsException, FileSystemLoopException, NoSuchFileException, NotDirectoryException, NotLinkException.

Из AccessDeniedException:

Проверенное исключение, которое выдается, когда операция файловой системы запрещена, как правило, из-за разрешения доступа к файлу или другой проверки доступа. Это исключение не связано с AccessControlException или SecurityException, выдаваемыми контролерами доступа или менеджерами безопасности, когда доступ к файлу запрещен.

9 голосов
/ 22 ноября 2011

После просмотра этого ответа и вспоминания, что я работаю в Windows 7 с UAC , я понимаю, что это проблема Windows.

  1. Ничего нельзя сделать из Java, чтобы это исчезло.
  2. Я должен каким-то образом отключить UAC for Play (запускать с правами администратора и т. Д.), Но на самом деле вопрос вообще не связан с Play (или разрешениями java).

Действительно, при запуске:

runas /noprofile /user:Administrator cmd
cd c:\myapp
play run

все работает хорошо.

...