首页 > 解决方案 > 注入构造函数时出错,java.nio.file.AccessDeniedException

问题描述

我得到一个异常(java.nio.file.AccessDeniedException),我不知道它背后的原因。

这是否发生在play.http.secret.key不正确的情况下,prod.conf或者这是其他一些凭据不正确的症状?

Oops, cannot start the server.
com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.nio.file.AccessDeniedException: /tmp/playtemp5604435787006203928
  at play.api.libs.Files$DefaultTemporaryFileCreator.<init>(Files.scala:145)
  at play.api.libs.Files$DefaultTemporaryFileCreator.class(Files.scala:142)
  while locating play.api.libs.Files$DefaultTemporaryFileCreator
  while locating play.api.libs.Files$TemporaryFileCreator    
Caused by: java.nio.file.AccessDeniedException: /tmp/playtemp5604435787006203928

标签: javaplayframeworknioioexception

解决方案


好吧,看起来您的应用程序无法在系统上进行文件操作,所以:

文件名/路径:仔细检查应用程序中使用的文件名和路径。

prod.conf:我不知道你有什么prod.conf,但我主要将它用于其他 api 的环境变量,例如 AWS;或数据库凭据。所以我不认为prod.conf创造了你的问题;除非您添加了生产超级用户凭据;这让我想到了最后一点。

你的应用程序不应该是超级用户:注意你不应该让你的应用程序做“sudo/superuser”的事情(例如,更新底层操作系统)。所以,如果你这样做,请避免它。如果造成混乱,那么您最终可能会被锁定在生产环境之外。当然,这里的例外是,如果您的 Web 应用程序是集群管理系统;例如,那么显然它可能需要执行超级用户操作。


推荐阅读