Java中的文件path(Linux)

我已经创build了一个Java应用程序,从一个位于src/文件夹中的文件conf.properties中加载一些configuration。

当我在Windows上运行这个应用程序,它完美的作品。 但是,当我尝试在Linux上运行它时,会引发这个错误:

 java.io.FileNotFoundException: src/conf.properties (No such file or directory) 

Solutions Collecting From Web of "Java中的文件path(Linux)"

如果您已经将应用程序打包到一个jar文件,该文件又包含属性文件,则应使用下面的方法。 这是分发Java程序的标准方式。

 URL pUrl = this.getClass().getResource("/path/in/jar/to/file.properties"); Properties p = new Properties(); p.load(pUrl.openStream()); 

路径中的/指向jar文件中的根目录。

代替

 String PROP_FILENAME="src/conf.properties"; 

使用

 String PROP_FILENAME="src" + File.separator + "conf.properties"; 

查看API了解更多详情: http : //java.sun.com/j2se/1.5.0/docs/api/java/io/File.html

如果你的路径是相对的,我也会检查你当前的工作目录是什么。 你只需要做一个File test = new File("."); 然后打印该文件的规范路径名称。

如果通过使用System.getProperty()引用任何其他位置(如user.dir或其他类似的位置),则至少需要验证用作相对根目录的目录是您认为的目录。

另外,正如Myles指出的,检查用作文件路径分隔符的斜杠。 虽然你总是可以使用“/”,它的作品。

如果你正确地引用了这个路径,那么如果你做了一些愚蠢的事情,比如硬编码这些位置,那么在一个操作系统和另一个操作系统之间就会遇到麻烦。

你想要做的是检查出System.getProperties()并寻找file.separator 。 静态的File.pathSeprator也会让你在那里。

这将允许您为您运行的任何系统构建一个本地路径。

(如果确实是这个问题,有时我喜欢获取当前目录,以确保我所运行的目录是我正在运行的目录。)

检查您的权限。 如果您(或者说,Java进程正在运行的用户)没有适当的权限来读取文件,例如,您将收到此错误消息。

这是典型的Windows – > Linux迁移问题。 从提示运行时, ls -l src/conf.properties显示什么内容?

另外,请检查大小写。 Windows不区分大小写,所以如果文件被实际调用,例如CONF.properties,它仍然可以被发现,而这两个文件在Linux上会被认为是不同的文件。

你应该检查你的应用程序的工作目录。 也许这不是你所假设的,这就是为什么'src'目录不存在。

一个简单的检查是尝试绝对路径(仅用于调试!)。

我会检查你的斜杠,Windows经常使用'\'与linux的'/'作为文件路径。

编辑:由于你的路径看起来不错,也许文件权限或应用程序的执行路径是不同的?

检查你的斜杠和冒号在我的情况下,我把我的PS1设置为以下值

PS1 ='\ n [\ e [1; 32m] $ SYSNAME(\ u)@ [\ e [1; 33m] \ w [\ e [1; 36m](\ d \ T)[! 0m] \ n \ $'

我正在尝试从env。例如system.getenv中读取

Java正在抛出异常

java.lang.IllegalArgumentException:格式错误的\ uxxxx编码

尝试双斜杠,在JBoss做事后,我经常不得不重构我的代码使用双斜杠