我想用springboot编写一些JUnit集成测试。我现在的问题是,由于我得到NullPointerException
,我无法使springboot工作Caused by: java.lang.NullPointerException
at org.springframework.boot.context.embedded.tomcat.TomcatResources$Tomcat7Resources.addJar(TomcatResources.java:112)
我做了一些调试,发现了以下问题:
spring boot在我的测试中使用tomcat 8.5.23,这没关系。但代码正在此代码块中加载Tomcat7Resources实例:
/**
* Return a {@link TomcatResources} instance for the currently running Tomcat version.
* @param context the tomcat context
* @return a {@link TomcatResources} instance.
*/
public static TomcatResources get(Context context) {
if (ClassUtils.isPresent("org.apache.catalina.deploy.ErrorPage", null)) {
return new Tomcat7Resources(context);
}
return new Tomcat8Resources(context);
}
因此变量" this.addResourceJarUrlMethod "在Tomcat7Resources实例中变为null,因为反射调用找不到只能在Tomcat8Resources中使用的方法。
this.addResourceJarUrlMethod = ReflectionUtils.findMethod(context.getClass(),
"addResourceJarUrl", URL.class);
因此稍后会出现NullPointerException。
如何防止springboot加载Tomcat7Resources?