Accessing JAR resources

僤鯓⒐⒋嵵緔 提交于 2019-11-26 12:46:40

问题


I have a jar file with resources (mainly configuration for caches, logging, etc) that I want to distribute.

I\'m having a problem with the relative paths for those resources, so I did what I\'ve found in another stackoverflow question, which said that this was a valid way:

ClassInTheSamePackageOfTheResource.class.getResourceAsStream(\'resource.xml\');

Sadly this does not work.

Any ideas? Thanks!

PS: Obviously I cannot use absolute paths, and I\'d like to avoid environment variables if possible


回答1:


Make sure that your resource folder is listed as a source folder in your project settings. Also, make sure that the resource folder is set to export when you build your jar.

You can add a .zip extension to your jar file then open it up to ensure that your resources are included and at the expected location.

I always use absolute paths like this:

InputStream input = this.getClass().getResourceAsStream("/image.gif");

When you use absolute paths, "/" is the root folder in the jar file, not the root folder of the host machine.




回答2:


I always have to puzzle through getResourceAsStream to make this work. If "resource.xml" is in org/pablo/opus, I think you want this:

Name.class.getResourceAsStream("org.pablo.opus.resource.xml");



回答3:


where the resource.xml found? If in the root of the source tree, try to prefix it with /.




回答4:


I usually store files and other resources and then retrieve them as URLs:

URL url = MyClass.class.getResource("/design/someResource.png");

Within a static context, or otherwise:

URL url = getClass().getResource("/design/someResource.png");

From an instance.

The above snippets assume that design is a top level folder within the jar. In general, if the path begins with a "/" it assumes an absolute path, otherwise it's relative from the class location.



来源:https://stackoverflow.com/questions/2639943/accessing-jar-resources

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!