Java can';t在CentOS 6.5中打开文件

Java can';t在CentOS 6.5中打开文件,java,centos,Java,Centos,我正在尝试运行一个java命令提示符程序,该程序接收5GB csv文件的路径。 虽然路径保证是正确的,并且我正在以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.<

我正在尝试运行一个java命令提示符程序,该程序接收5GB csv文件的路径。 虽然路径保证是正确的,并且我正在以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)
    ...
文件列表:

-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是否真的在这些参数中添加了一些有趣的看不见的字符。

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

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

chmod 666
此命令将允许每个人读取和写入文件


诚恳地说,

我是以root用户身份运行它的,而且我只打开了供大家阅读的文件。与此同时,我用新的发现更新了这个问题。
#!/bin/sh
#echo on
java -Xmx16000M -XX:MaxPermSize=512M -classpath "../classes:../lib/*" $@