Получение FileSystemException Требуемая привилегия не принадлежит клиенту, использующему Files.createSymbolicLink в Play Framework.

Я пытаюсь использовать новую версию 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, поэтому я понимаю, что происходит, но пока не знаю, как это исправить (я хотел бы дать контроллерам больше разрешений).

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


person ripper234    schedule 22.11.2011    source источник
comment
В Windows (W7) вы можете добавить пользователя в список тех, кто может создавать символические ссылки (без отключения UAC) с помощью политик безопасности. Запустите secpol.msc и измените Параметры безопасности|Локальные политики|Назначение прав пользователя|Создать символические ссылки   -  person mins    schedule 22.06.2014


Ответы (2)


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

Подклассы FileSystemException: AccessDeniedException, AtomicMoveNotSupportedException, DirectoryNotEmptyException, FileAlreadyExistsException, FileSystemLoopException, NoSuchFileException, NotDirectoryException, NotLinkException.

Из AccessDeniedException:

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

person Matthew Farwell    schedule 22.11.2011
comment
Кстати, когда я гуглил трассировку стека, в Google не было никаких результатов. Итак, я первый в Интернете, у кого возникла проблема с nio + UAC, и я написал об этом? - person ripper234; 22.11.2011
comment
@ ripper234 Сомневаюсь, но вы можете быть первым в stackoverflow. - person Matthew Farwell; 22.11.2011
comment
Нет, серьезно, у меня везде ноль результатов. Попробуйте прямо сейчас, вы найдете только этот вопрос: google.com/ - person ripper234; 22.11.2011
comment
Интересно, что в этой ситуации выбрасывается не AccessDeniedException, а общее исключение FileSystemException. Вид поражений цели конкретного подкласса. - person Trejkaz; 14.09.2012

Увидев этот ответ и вспомнив, что я работаю в Windows 7 с UAC, насколько я понимаю, это проблема Windows.

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

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

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

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

person ripper234    schedule 22.11.2011
comment
stackoverflow.com/questions/23217460/ - person gkns; 05.03.2019