【发布时间】:2024-11-13 21:20:01
【问题描述】:
我在编写部署在 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(布拉克 dostę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
我还应该满足操作系统中的哪些条件?
如果有人能澄清这个问题,我将非常感激。
编辑:
我在/path1下创建了目录,设置为777。文件保存完好。
我还在/path2/testdir下创建了目录,但是path2没有权限777和chown。它也有效。我还用字符. 和_ 测试了testdir,也可以。
我非常善于调查,无法理解这种行为。
【问题讨论】:
-
你检查了所有子目录的权限,确保Java进程的执行者可以访问所有子目录吗?
-
@JustinKSU,在之前将 +x 添加到所有目录之后,一切正常。我怎样才能给你正确的答案?
-
请告诉我们“Brak dostępu”是什么意思。我们并不都会说所有语言。本网站以英文进行。这条消息基本上包含了答案。
-
你启用了 selinux 吗?你能检查一下 selinux 的审计日志吗?
-
@Athlan 很高兴你知道了。
标签: java tomcat grails ioexception filenotfoundexception