java - 如何从打包到它自己的 .jar 中的 java 库访问资源

标签 java file maven jar

我有一个库项目,其中包含一些我想加载和使用的资源。 我会在另一个项目中使用这个库,所以我必须将资源打包到 .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/

相关文章:

c++ - 覆盖c库文件函数?

maven - 如何获取 log4j 消息以登录到 Cassandra?

java - Maven 将包含 html 文件的目录打包到 jar 中

maven - 在 pom.xml 中检查 maven 版本

c - 如何将一个C文件分成多个文件

java - 随着时间的推移,计划具有新功能的 Java API 的适当方法是什么?

java - 如何扫描打开的窗口

java - Spring Boot 中 Repository 默认 "findById"函数的运行时是多少?

java - Selenium WebDriver - 在测试期间删除 cookie 并重新启动浏览器

python - 读取文件并与字典进行比较