好的我正在Linux中使用Eclipse开发一个需要读取文本文件的程序。我们的想法是将JAR和文本文件放在同一个文件夹中。所以我得到这样的文本文件路径:
Client.class.getClassLoader().getResource("Client.class");
这正确地返回路径,我追加文件名并获得以下路径:
/home/marquinio/workspace/my_project/info.txt
问题是我将项目导出到可执行的JAR文件中。 JAR无法读取文件。我仔细检查,一切都很好。我看到的唯一问题是,现在路径在开头附加了一些“file:”,如下所示:
file:/home/marquinio/workspace/my_project/info.txt
这可能是我收到“FileNotFoundException”的原因。 JAR和文本文件都在同一个文件夹中。
任何人都知道如何解决这个问题?为什么Java在Eclipse和命令提示符中执行JAR之间会有不同的行为? 有没有“file:”的Java提供的“... getResource(...)”的替换?
注意:此JAR也应该在Windows环境中兼容。仍然需要测试它。
提前致谢。
答案 0 :(得分:1)
您所指的资源不能保证是文件系统上的文件。为什么不使用ClassLoader#getResourceAsStream()
?不考虑细节,我最好的猜测是你看到的不同行为是因为在上面的每种情况下使用了不同的类加载器。