java - 如何访问JAR文件中的Maven资源?

标签 java maven

<分区>

我有一个使用 Maven 构建的 Java 应用程序。我有一个资源文件夹 com/pkg/resources/... 我需要从中访问文件。例如 directory.txt。我一直在查看各种教程和其他 SO 答案,但似乎没有一个对我有用。现在我有:

ClassLoader classLoader = getClass.getClassLoader();
File file = new File(classLoader.getResource("/directory.txt");

当我输出 f.length 时,我得到一个 0 字节的结果。我也试过:

InputStream is = (this.getClass().getClassLoader().getResourceAsStream("/directory.txt"));
try{
    File file = File.createTempFile("dir", ".txt");
    Files.copy(is, file.toPath());
} catch (IOException e) {
    e.printStackTrace();
}

但该代码也不起作用。我以前没有使用过从 JAR 访问文件。关于可能出现问题的任何想法?

最佳答案

如果 maven 没有在您的 jar 中包含资源文件夹,您可以使用以下代码将资源文件夹包含在 jar 中。 Maven 默认搜索 src/main/java/resources 中的资源文件夹,如果您的资源不在该路径中,则 Maven 不会包含在类路径中。下面是在类路径中显式包含资源文件夹的代码。添加到你的 pom.xml

<build>
    ....
    <resources>
        <resource>
            <directory>path-of-resource-folder</directory>
        </resource>
    </resources>
    ....
</build>

关于java - 如何访问JAR文件中的Maven资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640729/

相关文章:

java - 所需库的存档 : 'lib/Chrome/chromedriver' in project 'XYZ' cannot be read or is not a valid ZIP file using ChromeDriver Selenium Java

java - 为什么 Maven + Spring Boot 会创建巨大的 jar 文件?

schema - 使用什么版本编号方案?

security - Maven安全问题

Eclipse Mars - Web 应用程序 - Tomcat - Maven - 部署和调试

java - 如何在weka中使用贝叶斯信念网络找到变量之间的因果关系?

java - HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST

java - 为什么不能用Java声明Monad接口(interface)?

java - Apache Sqoop启动配置错误:org.apache.hadoop.mapred.YarnClientProtocolProvider不是子类型

java - 需要根据当前日期列出前几个季度的列表