一尘不染

如何在Java JAR文件中获取资源的路径

java

我正在尝试获取资源的途径,但是我没有运气。

这是可行的(在IDE和JAR中都可以),但是这样一来,我无法获取文件的路径,只能获取文件内容:

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

如果我这样做:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

结果是: java.io.FileNotFoundException: file:/path/to/jarfile/bot.jar!/config/netclient.p (No such file or directory)

有没有办法获取资源文件的路径?


阅读 833

收藏
2020-03-02

共1个答案

一尘不染

这是故意的。“文件”的内容可能无法作为文件使用。请记住,您正在处理的类和资源可能是JAR文件或其他类型的资源的一部分。类加载器不必为资源提供文件句柄,例如jar文件可能尚未扩展为文件系统中的单个文件。

如果绝对需要java.io.File,则可以通过将流复制到临时文件中并执行相同操作来获取java.io.File。

2020-03-02