【问题标题】:Getting FileSystemException "A required privilege is not held by the client" using Files.createSymbolicLink in Play Framework使用 Play Framework 中的 Files.createSymbolicLink 获取 FileSystemException“客户端未持有所需的权限”
【发布时间】:2012-01-03 21:49:21
【问题描述】:

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

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

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

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

【问题讨论】:

  • 使用 Windows (W7),您可以使用安全策略将用户添加到可以创建符号链接(不禁用 UAC)的列表中。运行“secpol.msc”并更改“安全设置|本地策略|用户权限分配|创建符号链接”

标签: java permissions playframework nio java-7


【解决方案1】:

在看到 this answer 并记得我使用 UAC 在 Windows 7 上运行后,我明白这是一个 Windows 问题。

  1. 在 Java 中没有任何事情可以解决这个问题。
  2. 我应该能够以某种方式专门关闭 UAC for Play(以管理员身份运行等...),但这个问题与 Play(或 java 权限)根本无关。

确实,运行时:

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

一切正常。

【解决方案2】:

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

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

来自 AccessDeniedException:

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

【讨论】:

  • 顺便说一句,当我用谷歌搜索堆栈跟踪时,谷歌上的结果为零。所以我是互联网上第一个遇到 nio + UAC 问题的人,并发布了相关信息?
  • @ripper234 我对此表示怀疑,但您可能是 stackoverflow 上的第一个。
  • 不,说真的,我到处都得到零结果。现在试试,你只会发现这个问题:google.com/…
  • 有趣的是,在这种情况下它不会抛出 AccessDeniedException,而是抛出通用的 FileSystemException。有点违背特定子类的目的。
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 2014-10-21
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多