我是靠谱客的博主 高贵花卷,最近开发中收集的这篇文章主要介绍Maven之java中的类访问不到resources中的资源,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/104623696




今天在做一个 MyBatis 的 HelloWorld 时,出现一个很神奇的问题,在 src/main/java 目录下访问 src/main/resources 目录下的资源时,一直在报空指针异常。看下图:

空指针异常


问题描述

其实这个问题和空指针没有多大关系,一开始我研究的重心都放在了空指针上,其实并不是这样的,有的时候错误往往会蒙蔽双眼。它 最大的原因是 src/main/java 目录中的类访问不到 src/main/resources 目录下的资源 ,这才是关键。

这个问题我让大牛看过,他发现我在编译后,classes 目录下没有 src/main/resources 目录下的资源,这才引起了我的重视。学过 Maven 的小伙伴们应该都知道,src/main/resources 目录下的资源编译后会自动放在 classes 目录下对应的包中,可是我的工程编译后 resources 目录下的资源并没有在 classess 目录下出现。

我忽然想到在之前我为了让 src/main/java 中 MyBatis 的映射文件生效,在 pom.xml 中配置了下面这段代码:
 

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

这段代码的意思在 src/main/java 目录下的 任意包中的 xml 文件都会在编译的时候,放到对应的包下。



解决方案

其实 Maven 在默认情况下,它会自动将 src/main/resources 下的 .xml 文件放到 target 里头的 classes 文件夹下对应的包中。如果你手动设置了 resources,那么默认的就会失效(如同我上面的代码),因此需要手动指定 resources 目录。

所以我修改了 pom.xml 文件,代码如下:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

重新编译,完美解决!



博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!



最后

以上就是高贵花卷为你收集整理的Maven之java中的类访问不到resources中的资源的全部内容,希望文章能够帮你解决Maven之java中的类访问不到resources中的资源所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部