Obtenir une exception FileSystemException «Le client ne dispose pas d’un privilège» à l’aide de Files.createSymbolicLink dans Play Framework

J’essaie d’utiliser la nouvelle méthode Java 7 Files.createSymbolicLink () dans Play! Framework, et j’ai eu l’exception suivante:

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

Ceci est ma première rencontre avec le modèle de permission de Java, donc je comprends ce qui se passe, mais je ne sais pas encore comment le réparer (je voudrais donner plus de permissions aux contrôleurs).

Si quelqu’un peut répondre plus rapidement que je ne trouve la réponse, moi (et les futurs lecteurs) nous en serons reconnaissants.

    Ce n’est pas un problème avec les permissions java, mais un problème avec les permissions du système d’exploitation. Voir FileSystemException .

    Les sous-classes de FileSystemException sont: AccessDeniedException, AtomicMoveNotSupportedException, DirectoryNotEmptyException, FileAlreadyExistsException, FileSystemLoopException, NoSuchFileException, NotDirectoryException, NotLinkException.

    De AccessDeniedException:

    Exception vérifiée renvoyée lorsqu’une opération de système de fichiers est refusée, généralement en raison d’une autorisation de fichier ou d’un autre contrôle d’access. Cette exception n’est pas liée à AccessControlException ou SecurityException levée par les contrôleurs d’access ou les responsables de la sécurité lorsque l’access à un fichier est refusé.

    Après avoir vu cette réponse , et en me rappelant que je suis sous Windows 7 avec UAC , je comprends bien qu’il s’agit d’un problème Windows.

    1. Rien ne peut être fait depuis Java pour que cela disparaisse.
    2. Je devrais pouvoir désactiver UAC for Play d’une manière ou d’une autre (exécuter en tant qu’administrateur etc …), mais la question n’est pas vraiment liée à Play (ou aux permissions Java).

    En effet, lors de l’exécution:

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

    tout fonctionne bien.