一、报错信息如下,java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.driver' in value "${jdbc.driver}"
解释:
一直报错误是在加载spring-context.xml的时候无法识别数据源的参数,而这些参数是在application.properties中存放着。
有几个原因:
1、application.properties没有扫描到
2、没有加载出来
3、application.properties中的参数写错了
通过查看target中的classes下的内容发现,原来是没有编译出来。于是找到以前的测试框架,发现在编译时没有把resource算进去。
于是在pom.xml中的build下添加了如下内容:
<resources>
<resource>
<directory>src/test/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>dev/*</exclude>
<exclude>uat/*</exclude>
<exclude>local/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/test/resources/${profiles.active}</directory>
</resource>
</resources>
二、具体报错信息如下:
Error creating bean with name 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0': Invocation of init method failed
解决:将spring-context加载出来。
这个错误出现过很多次,有一次是加上spring-context就解决了,有一次是更换了spring的jar包版本就可以了。最后一次遇到这个问题时,其他同事同样的代码,是可以跑通用例的,只有我本地的不行。百度上说要在测试类中加上@WebAppConfiguration注解,本来并没有尝试这个方法。。找了很多jar包冲突或者不匹配的地方,均未解决。最后实在没办法,就把工程从本地删除,然后重新下载,还是不行。最后尝试了加上注解的办法,用例跑通。
之后要研究下该注解。