我有一个库项目,其中包含一些我想加载和使用的资源。 我会在另一个项目中使用这个库,所以我必须将资源打包到.jar中。这就是它的实现方式:
fcntl.h
尝试检索文件时出现问题,我这样做:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
为url分配了String resourceName = "myTemplateResource.json";
URL url = MyClass.class.getClassLoader().getResource(resourceName);
值。它发生在图书馆的测试和依赖项目中。什么缺失的暗示?
还使用
进行了测试null
和
MyClass.class.getResource("/myTemplateResourceName.json");
具有相同的结果。
答案 0 :(得分:3)
使用getResourceAsStream()
方法从.jar文件加载资源,如下所示:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(locaiton);
例如:如果文件'myTemplateResourceName.json'直接位于resources文件夹中,请仅使用文件名。如果在路径前添加斜杠(/),则会出错。
InputStream inputStream = classLoader.getResourceAsStream("myTemplateResourceName.json");
注意:您必须将资源文件放在项目中的main/resources
(不要将其保存在test/resources
部分中,因为它未包装在jar文件中)文件夹中用于创建jar文件。
答案 1 :(得分:1)
我无法找到的文件名有问题。重命名该文件,现在没事了。
回答我的问题:
首先将资源添加到.pom文件中的jar。
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
然后访问您的文件。
URL url = MyClass.class.getClassLoader().getResource(resourceName);
从那里你可以获得InputStream
。看起来很简单。