【问题标题】:Java can't open file in CentOS 6.5Java 无法在 CentOS 6.5 中打开文件
【发布时间】:2014-03-12 00:29:44
【问题描述】:

我正在尝试运行一个接收 5GB csv 文件路径的 java 命令提示程序。 虽然路径保证是正确的,并且我以 root 身份运行程序,但我的程序抛出:

 (No such file or directory)ava.io.FileNotFoundException: /data/tmp/NPPES/npidata.csv
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at java.io.FileReader.<init>(FileReader.java:58)
    ...

java 行是:

BufferedReader file = new BufferedReader( new FileReader(args[1]));

文件列表:

-rw-r--r-- 1 root root          4 Mar 11 15:35 empty.csv
-rw-r--r-- 1 root root 5097950480 Feb 11 00:36 npidata.csv

然后我认为这可能是文件大小,所以我创建了一个 4 个字符的文件。依然没有。 有没有人碰巧遇到过这种情况?

更新:

我修改了java程序以列出所有接收参数并且它们显示正确。

我通过 shell 脚本 launch.sh 运行程序,内容如下:

#!/bin/sh
#echo on
java -Xmx16000M -XX:MaxPermSize=512M -classpath "../classes:../lib/*" $@

当我直接用 java 运行它时,它工作了:找到了文件。

最大的谜团是 cmd 行参数在这两种情况下都正确显示。 我想知道 shell 是否真的在这些参数中添加了一些有趣的看不见的字符。

【问题讨论】:

    标签: java centos


    【解决方案1】:

    正如您在文件列表中看到的那样,只有 root 作为在文件上写入的权限。这也意味着只有root才能打开它。

    我认为您的应用程序没有以 root 身份运行,因此您应该首先尝试更改文件的权限:

    chmod 666这个命令将允许每个人读写文件。

    此致,

    【讨论】:

    • 我以 root 身份运行它,并且我打开文件仅供阅读,每个人都可以使用。与此同时,我用新的发现更新了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2012-08-14
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多