【发布时间】:2015-03-11 10:43:24
【问题描述】:
好的。我有以下网络应用程序 sn-p(在构造函数中调用 - 如果这很重要):
private File[] logFiles;
...
try {
File directory = new File(auditDirectory);
LOG.debug("Found directory: " + directory.getAbsolutePath());
logFiles = directory.listFiles();
LOG.debug("Number of logFiles: " + logFiles.length);
} catch (Exception e) {
LOG.error("Exception: ", e);
throw new RuntimeException("Failed to get list of audit files", e);
}
在我的 Windows 环境 (localhost) 中,一切都像一个魅力。在 linux (ubuntu) 环境上部署后,似乎这条线
directory.listFiles();
返回空值。我从以下 linux 部署日志中得出结论:
c.a.s.a.a.AuditFileSource - Found directory: /home/myapp/myappfolder/logs
c.a.s.a.a.AuditFileSource - Exception:
java.lang.NullPointerException: null
at com.myapp.services.administration.audit.AuditFileSource.<init>(AuditFileSource.java:31) ~[com.myapp.services-2.2.2.jar:2.2.2]
at...
日志行 AuditFileSource.java:31 实际上是一行:
LOG.debug("Number of logFiles: " + logFiles.length);
很明显,NullPointerException 是作为尝试访问为空的 logFiles 变量上的长度而引发的。
我的第一次尝试是更改相关 Linux 文件夹的权限,但它们已经具有读取权限。我完全不解。任何想法?
【问题讨论】:
-
是目录。我可以在使用 putty 登录后知道这一点。它是目录,里面有日志文件。
-
这和看
directory.isDirectory()是否返回true不一样。 -
我已经有执行权限... :/
-
同样,这并不能回答问题:如果您登录
directory.isDirectory(),您会看到什么? -
执行权限不是您阅读目录中的条目所需要的;您需要的是 read 权限。如果你
stat()文件,你将需要执行权限。