我有一个库项目,其中包含一些我想加载和使用的资源。 我会在另一个项目中使用这个库,所以我必须将资源打包到 .jar 中。这是如何实现的:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
尝试检索文件时出现问题,我这样做:
String resourceName = "myTemplateResource.json";
URL url = MyClass.class.getClassLoader().getResource(resourceName);
url 被分配了一个 null
值。它发生在库的测试和依赖项目中。有什么遗漏的提示吗?
也用
测试过MyClass.class.getResource("/myTemplateResourceName.json");
和
MyClass.class.getClassLoader().getResource("src/main/resources/myTemplateResource.json");
同样的结果。
最佳答案
使用getResourceAsStream()
方法从.jar文件中加载资源,如下所示:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(locaiton);
例如:如果文件“myTemplateResourceName.json”直接位于资源文件夹中,则仅使用文件名。如果在路径前加斜线(/)是错误的。
InputStream inputStream = classLoader.getResourceAsStream("myTemplateResourceName.json");
注意:您必须将资源文件放在 main/resources
中(不要将其放在 test/resources
部分,因为它没有打包在jar 文件)项目中用于创建 jar 文件的文件夹。
关于java - 如何从打包到它自己的 .jar 中的 java 库访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952196/