概述
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址: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中的资源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复