SpringBoot嵌入式Tomcat NullPointerException

时间:2016-02-22 16:40:45

标签: spring tomcat spring-boot

我最近开始将旧的Spring项目转换为SpringBoot。我不是这个项目的原作者,所以我很遗憾没有完全理解它的配置。

在大多数情况下,编译到jar似乎正在起作用。但是,只要我打开网页,Spring就会出现映射错误。

stacktrace只包含嵌入式tomcat代码,所以我不知道从哪里开始调试它。

  

2016-02-22 10:05:32.472 ERROR 4995 --- [nio-8080-exec-5]   o.a.c.c.C. [Tomcat的]。 [localhost]。[/]:映射期间出错

     

java.lang.NullPointerException:null at   org.apache.catalina.mapper.Mapper.internalMapWrapper(Mapper.java:1008)   〜[tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.mapper.Mapper.map(Mapper.java:712)   〜[tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:499)   〜[tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:221)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:427)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:304)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:181)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:674)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)   [na:1.8.0_74] at   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)   [na:1.8.0_74] at   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)   [tomcat-embed-core-8.0.30.jar:8.0.30] at   java.lang.Thread.run(Thread.java:745)[na:1.8.0_74]

该应用程序正在从Intellij的SpringBoot插件运行。 访问默认的'/'映射时会发生错误。

迁移步骤:

  • 将spring-boot-starter-parent添加到pom.xml
  • 导入spring-boot-starter-web,spring-boot-starter-data-jpa,spring-boot-starter-security,spring-boot-starter-jdbc
  • 在application.properties中设置jdbc连接而不是tomcat config
  • 使用@SpringBootApplication创建主类,使用@ImportResource(使用我的4个xml文件)和@EnableJpaRepositories

应该注意的是,在tomcat中运行时切换到SpringBoot工作正常。当我尝试编译到jar时遇到了这个问题。

我刚尝试使用Undertow而不是Tomcat运行,它似乎工作。虽然我没有遇到“请求方法'POST'不支持。我正在使用的库(khs-sherpa),我假设它不支持Undertow。

非常感谢任何帮助。如果问题中还有其他问题需要我知道。

0 个答案:

没有答案