在Play Framework中使用Files.createSymbolicLink获取FileSystemException“客户端不拥有所需的权限”

我正在尝试在Play中使用新的Java 7 Files.createSymbolicLink()方法! 框架,我得到以下exception:

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

这是我第一次遇到Java的权限模型,所以我理解发生了什么,但还不知道如何修复它(我想给控制器更多权限)。

如果有人能够比我找到答案更快地回答这里,我(以及未来的读者)将不胜感激。

这不是Java权限的问题,而是操作系统权限的问题。 请参见FileSystemException 。

FileSystemException的子类有:AccessDeniedException,AtomicMoveNotSupportedException,DirectoryNotEmptyException,FileAlreadyExistsException,FileSystemLoopException,NoSuchFileException,NotDirectoryException,NotLinkException。

来自AccessDeniedException:

拒绝文件系统操作时抛出的已检查exception,通常是由于文件权限或其他访问检查。 此exception与访问控制器或安全管理器在拒绝访问文件时抛出的AccessControlException或SecurityException无关。

看到这个答案 ,并记住我在Windows 7上运行UAC ,我知道这是一个Windows问题。

  1. Java中没有任何东西可以让它消失。
  2. 我应该能够以某种方式关闭UAC for Play(以管理员等身份运行…),但问题根本与Play(或java权限)无关。

确实,在跑步时:

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

一切顺利。