访问JAR资源
我有一个jar
文件,其中包含我要分发的资源(主要是缓存,日志记录等配置)。
我对这些资源的相对路径有问题,所以我做了我在另一个stackoverflow问题中发现的问题,该问题说这是一种有效的方法:
ClassInTheSamePackageOfTheResource.class.getResourceAsStream('resource.xml');
可悲的是,这不起作用。
有任何想法吗? 谢谢!
PS:显然我不能使用绝对路径,如果可能的话我想避免使用环境变量
确保资源文件夹在项目设置中列为源文件夹。 此外,确保在构建jar时将资源文件夹设置为export。
您可以在jar文件中添加.zip扩展名,然后将其打开以确保您的资源包含在预期位置。
我总是使用这样的绝对路径:
InputStream input = this.getClass().getResourceAsStream("/image.gif");
使用绝对路径时,“/”是jar文件中的根文件夹,而不是主机的根文件夹。
我总是不得不通过getResourceAsStream
来解决这个问题。 如果“resource.xml”在org/pablo/opus
,我想你想要这个:
Name.class.getResourceAsStream("org.pablo.opus.resource.xml");
找到resource.xml的位置? 如果在源树的根目录中,请尝试使用/作为前缀。
我通常存储文件和其他资源,然后将其作为URL检索:
URL url = MyClass.class.getResource("/design/someResource.png");
在静态上下文中,或者:
URL url = getClass().getResource("/design/someResource.png");
从一个实例。
上面的片段假设设计是jar中的顶级文件夹。 通常,如果路径以“/”开头,则它采用绝对路径,否则它与类位置相关。