【问题标题】:java.security error when creating directory (Linux)创建目录时出现 java.security 错误(Linux)
【发布时间】:2012-05-26 10:48:52
【问题描述】:

我有这样的代码:

return (new File(pathA + File.separator + pathB + File.separator)).mkdir();

我相信它曾经有效,但现在无效。该应用程序仅在 Linux 上运行,我们已经使用 Mint 9、Ubuntu 10.04、Kubuntu 12.04 等对其进行了测试。它不会创建预期的目录。

路径在具有 777 权限的目录中。

堆栈跟踪不是很有帮助。因为跟踪显示了对 java.security 方法的几个调用,所以我认为这是一个权限问题。但是实际的报错信息一点用都没有(可能是因为代码中的异常处理需要改进)。

在 Linux 上用 Java 创建目录的最佳方法是什么?

【问题讨论】:

  • 请分享实际的错误信息。也许我们确实发现它们比您模糊的描述更有帮助。 new File(path).mkdir() 可以工作吗?永远不需要额外的分隔符。
  • “但是实际的错误信息根本没有帮助(可能是因为代码中的异常处理需要改进)。” 所以改进它并复制/粘贴输出。
  • 即使 csi 在没有证据的情况下也无法工作。请改进日志并带来它们
  • 还要说明它是什么类型的应用程序。它是在 servlet 容器中运行的 Web 应用程序,如 tomcat、applet、简单的 java 应用程序……?
  • 查看失败的“路径”的值也很有用。

标签: java linux file-io directory


【解决方案1】:
  • path + File.separator 提取到一个变量中。
  • 打印到控制台
  • 在终端中启动 shell 并使用与应用程序运行相同的用户帐户运行此命令 mkdir <INSERT THE PATH TO THE DIR THAT YOUR APP IS TRYING TO CREATE HERE>

这应该可以找到问题的根本原因。

如果这不能使答案显而易见,请将所有其他证据添加到问题中。

【讨论】:

  • 你说得对,我在问题中遗漏了一些重要的东西。我无意中忽略了有多个目录级别的事实。我解决了这个问题,并给出了解决方案。
【解决方案2】:

问题是我在路径中创建了不止一级的目录。解决方案是:

return (new File(pathA + File.separator + pathB + File.separator)).mkdirs();

注意 mkdirs() 上的“s”。

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多