从我制作的java应用程序中,我构建了相应的jar文件。
我复制了jar文件中的所有资源。
例如,如果在src/main/resources
中存在以下资源/folder/my-file
,则将其复制到具有相同路径的jar中。
但是如果我执行jar,那么资源的加载就会失败。
具体来说,它会抛出像这样的IOException
java.io.IOException:无法解析 “file:/my-jar.jar!/ folder / my-file”作为类路径,文件名或 URL
我应该如何加载资源?
如果我在eclipse中运行java应用程序,一切正常,即使资源也正确加载。
编辑:
我通过以下方式获取资源的路径:
MyClass.class.getResource("/folder/my-file").getPath();
资源的加载是由外部库完成的,我必须只是指定路径。
答案 0 :(得分:2)
在这种情况下,我会尝试:
YourClass.class.getClassLoader().getResourceAsStream("folder/my-file");
这将独立于您的执行环境向您的资源返回InputStream
。
答案 1 :(得分:0)
如果你有这样的结构:
src/main/Begin.java
src/main/folder/icon.png
在Begin.java中尝试这个:
Begin.getClass().getResource("/main/folder/icon.png");