java - 使用 mvn exec :java doesn't work 从另一个 Maven 模块加载资源

标签 java maven

我有一个具有以下结构的 Maven 项目:

parent
-----module1
--------src
------------main
-----------------java
----------------------Loader.java
-----------------resources
-------------------------file1.txt
-----module2
--------src
------------main
-----------------java
-------------------------CallLoader.java

因此Loader.java,加载files1.txt。我从 module2 的 CallLoader.java 中调用此类。这是我使用的代码

Loader.java中,

private static File getResourceFile(String fileName){
        try {
            URL resource = GraphUtil.class.getClassLoader().getResource(fileName);
            return new File(resource.getPath());
        } catch (Throwable e) {
            throw new RuntimeException("Couldn't load resource: "+fileName, e);
        }
}

其中fileName="file1.txt"

我收到错误,因为文件绝对路径如下所示:

file:/home/moha/.m2/repository/my/package/name/%7Bproject.version%7D/base-%7Bproject.version%7D.jar!/file1.txt

我究竟做错了什么?

最佳答案

以流的形式获取文件的内容,以便能够从 jar 文件中读取资源,这是问题的根本原因。换句话说,使用 getResourceAsStream 而不是 getResource

您还可以返回 URL 而不是 File,然后在需要时调用 openStream() 来读取它。

NB1: URL 的类型为 jar:file/...,不能由类 File 管理

>

NB2: 要将 URL 转换为 File,正确的代码是 new File(resource.toURI())

关于java - 使用 mvn exec :java doesn't work 从另一个 Maven 模块加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499742/

相关文章:

java - 在 Android 上检索设备信息

java - JCombobox Listener如何在选择项目时启用它?

maven - IntelliJ IDEA 中有 Maven 插件,无需在计算机上安装 Maven

java - 我的 pom 中有一个依赖项,该依赖项与其他 pom 冲突

scala - sbt- ManagedStyle.Maven

java - Maven 编译错误 : Fatal error compiling: invalid target release: 1. 8

java - 使用java将csv文件中的数据导入到access数据库中

java - 将隐藏(生物识别)数据附加到 pdf 上的数字签名

java - 如何在java中使用jFileChooser的打开按钮?

salesforce API jar 的 Maven 阴影 jar 中的 java.lang.NoClassDefFoundError