如何获取JavaJAR文件中的资源路径

如何获取JavaJAR文件中的资源路径

我正试图找到一条通往资源的道路,但我没有运气。

这是可行的(在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)

有办法获得资源文件的路径吗?


四季花海
浏览 3034回答 3
3回答

慕后森

这是故意的。“文件”的内容可能不能作为文件使用。记住,您正在处理的类和资源可能是JAR文件或其他类型资源的一部分。类加载器不必为资源提供文件句柄,例如JAR文件可能还没有扩展到文件系统中的单个文件。如果绝对需要java.io.File,则可以通过将流复制到临时文件中并执行此操作来完成您通过获取java.io.File所能做的任何事情。

MYYA

唯一的答案是-String&nbsp;path&nbsp;=&nbsp;this.getClass().getClassLoader().getResource(<resourceFileName>).toExternalForm()基本上getResource方法提供URL。从这个URL中,您可以通过调用toExternalForm()参考资料:getResource(),&nbsp;toExternalForm()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java