好的,我正在使用 Eclipse 在 Linux 中开发一个需要读取文本文件的程序。这个想法是将 JAR 和文本文件放在同一个文件夹中。所以我得到这样的文本文件路径:
Client.class.getClassLoader().getResource("Client.class");
这会正确返回路径,我附加文件名并获得以下路径:
/home/marquinio/workspace/my_project/info.txt
问题是当我将项目导出到可执行 JAR 文件时。 JAR 无法读取文件。我仔细检查了一下,一切看起来都很好。我看到的唯一问题是现在路径的开头附加了一些“文件:”,如下所示:
file:/home/marquinio/workspace/my_project/info.txt
这可能就是我收到“FileNotFoundException”的原因。 JAR 和文本文件都在同一个文件夹中。
有人知道怎么解决吗?为什么 Java 在 Eclipse 和在命令提示符下执行 JAR 之间的行为会有所不同? Java 提供的没有“文件:”的“...getResource(...)”有替代品吗?
注意:此 JAR 也应在 Windows 环境中兼容。还需要测试一下。
提前致谢。
最佳答案
不保证您所引用的资源是文件系统上的文件。为什么不使用 ClassLoader#getResourceAsStream()
?在不查看细节的情况下,我最好的猜测是您看到的不同行为是因为在上述每种情况下使用了不同的类加载器。
关于java - 在 Linux 中将 Java URL 转换为有效的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550231/