使用Springboot的TomcatResources中的NullPointerException

时间:2018-01-31 12:49:19

标签: java tomcat spring-boot nullpointerexception

我想用springboot编写一些JUnit集成测试。我现在的问题是,由于我得到NullPointerException

,我无法使springboot工作
Caused by: java.lang.NullPointerException
     at org.springframework.boot.context.embedded.tomcat.TomcatResources$Tomcat7Resources.addJar(TomcatResources.java:112)

我做了一些调试,发现了以下问题:

  1. 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);
     }
    
  2. 因此变量" this.addResourceJarUrlMethod "在Tomcat7Resources实例中变为null,因为反射调用找不到只能在Tomcat8Resources中使用的方法。

    this.addResourceJarUrlMethod = ReflectionUtils.findMethod(context.getClass(),
                "addResourceJarUrl", URL.class);
    

    因此稍后会出现NullPointerException。

  3. 如何防止springboot加载Tomcat7Resources?

0 个答案:

没有答案