当前位置: 首页 > 知识库问答 >
问题:

maven从依赖jar src/main/资源加载文件

宋臻
2023-03-14

我有一个SpringWeb应用程序,它是作为maven工件a.war创建的。它有一个maven依赖项和一个工件B.jar。工件B的src/main/resources有一个文件测试。txt。我想读一下测试文件。来自神器A.war的txt。当我引爆B.jar时,我看到了测试结果。jar的根位于txt中。在A中,我尝试使用文件f=new ClassPathResource(“test.txt”)读取该文件。getFile();

我得到java.io.FileNotFoundException:类路径资源[test.txt]无法解析为绝对文件路径,因为它不驻留在文件系统中:jar: B. jar!/test.txt.我还尝试了File f=new File(getClass(). getResources("test.txt"). toURI());

有人能帮忙吗?

共有2个答案

夏青青
2023-03-14

您必须为类路径资源构建自己的类加载器,以便从JAR读取文件。

我在博客上解释了这一点(https://skmit.wordpress.com/2012/02/29/read-classpath-resource-from-jar-files-with-spring/)

祝高阳
2023-03-14

我终于得到它的工作通过以下链接中提到的替代路径

基本上,在工件A的pom文件中,我使用了maven依赖插件和解包目标。使用它,我解包了工件B并复制了测试。txt到项目A的目标/类目录。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.me</groupId>
                                <artifactId>artifactB</artifactId>
                                <version>1.0-SNAPSHOT</version>
                                <outputDirectory>${basedir}/target/classes</outputDirectory>
                                <includes>*.txt,*.xml</includes>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在构建工件A时,会创建war文件A.war并进行测试。txt出现在分解的war文件的WEB-INF/classes目录中,因此它位于类路径中。

 类似资料:
  • 在使用Maven捆绑JAR文件中的资源时,我有一种感觉,我错过了一些关键的东西。我的目录结构是标准的Maven结构(即\src\main\java,\src\main\Resources)。 使用IDE时,我将资源文件引用为\main\resources\images\blah。。。它工作得很好,但当Maven捆绑JAR文件时,它会将路径放在相对于根的位置(“\ images\blah”),因此没

  • 如何从其 GitHub 存储库(该库使用 Maven 作为构建系统)添加 Java 库作为依赖项添加到我的 Maven 项目中?我可以在不下载和编译库的情况下执行此操作吗?

  • Spring靴-1.4.1;IDE-IntelliJ 2016.3。EAP 我试图加载资源如下; 和 当我从IDE运行应用程序时,这两种方法都可以正常工作,但当我尝试将应用程序构建为war并将其部署到Tomcat上时,这两种方法都不起作用。 有人能帮我解决这个问题吗? 谢谢

  • 我正在使用Maven Shade插件在打包阶段包含所有依赖项。这适用于类,但不包括依赖资源。 以下是依赖罐的布局: 以下是阴影插件配置:

  • 4.6 资源依赖 如果bean本身将通过某种动态过程来确定和提供资源路径,那么bean可以使用ResourceLoader接口来加载资源。 j假设以某种方式加载一个模板,其中需要的特定资源取决于用户的角色。 如果资源是静态的,那么完全消除ResourceLoader接口的使用是有意义的,只需让bean公开它需要的Resource属性,那么它们就会以你所期望的方式被注入。 什么使得它们轻松注入这些属

  • 传统方式的导入外部JS和CSS文件的方法是直接在模板文件使用: <script type='text/javascript' src='/static/js/common.js'> <link rel="stylesheet" type="text/css" href="/static/css/style.css" /> 系统提供了专门的标签来简化上面的导入: {load href="/stati