尽管chmod 777,java.io.FileNotFoundException(权限被拒绝)
在Tomcat上编写Grails应用程序时,我遇到了一些奇怪的问题。
创建简单的测试控制器后,我想在包com中编写测试内容
package com.domain.controller import java.io.File; import java.io.PrintWriter; class TestController { def index() { // test try { PrintWriter writer = new PrintWriter("/home/user/domains/domain.com/public_html/the-file-name.txt"); writer.println("The first line"); writer.println("The second line"); writer.close(); } catch (IOException e) { throw new RuntimeException(e); } } }
我得到一个例外:
类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brakdostępu)
我已将chmod设置为777到/home/user/domains/domain.com/public_html/
。 并且tomcat7.tomcat7
是所有者。 我还试图创建这个文件,访问权限777和所有权设置为tomcat7,但我仍然得到一个例外:
ls -al /home/user/domains/domain.com/public_html razem 16 drwxrwxrwx 3 tomcat7 tomcat7 4096 01-08 23:25 . drwxr-xr-x 8 user user 4096 12-16 17:14 .. -rwxrwxrwx 1 tomcat7 tomcat7 0 01-08 23:25 the-file-name.txt
我应该在OS中遇到什么条件?
如果有人能澄清问题,我将非常感激。
编辑 :
我在/path1
下创建了目录,设置为777.文件存储完美。 我还在/path2/testdir
下创建了目录,但是path2没有权限777和chown。 它也有效。 我还用字符测试了testdir
.
和_
,也有效。
我很调查,无法理解这种行为。
确保您还具有对所有父目录的读取和执行访问权限。
示例: chmod o+x /home/user
最后我解决了这个问题。 路径中的一个目录没有其他组的可执行权限,因此@JustinKSU建议,没有可能通过整个路径。
chmod o+x /home/user
解决了这个问题。
发生FileNotFoundException :
当具有指定路径名的文件不存在时。 如果文件存在但由于某种原因无法访问,例如当尝试打开只读文件进行写入时,也会抛出它。
文件在那里,它根据您发送的内容具有写权限。
在某些情况下,如果您尝试访问以进行读/写操作的文件被另一个程序打开,则会发生此错误。 使用lsof | grep the-file-name.txt
lsof | grep the-file-name.txt
以查看它是否已打开。
我在Jenkins工作中的构建过程中遇到了这个问题。 我已经将jenkins
用户添加到tomcat7
组,但只要应该将工件复制到Tomcat实例目录,Jenkins作业就会失败。
事实certificate,我需要解决的所有问题是重启Jenkins服务。
- 使用可执行Jar时找不到Spring-Boot资源
- 导出为.jar文件后的FileNotFoundException
- 使用File对象初始化FileInputStream时获取FileNotFoundException
- java.io.FileNotFoundException在文件名中检索带有变音符号的URL时
- 引起:java.io.FileNotFoundException:无法打开ServletContext资源
- 从java下载web url下载图像?
- 使用ExifInterface时的FileNotFoundException
- 在android中选择文件后找不到文件错误
- 为什么我一直得到“必须被抓或被宣布被抛出”的错误?