SpringBoot运行NoSuchMethodError

最近在看《精通Spring 4.x 企业应用开发实战》,学习到第三章Spring Boot,发现配套代码报出如下错误:

2017-06-24 15:36:16.905 ERROR 37076 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Exception sending context initialized event to listener instance of class org.apache.tomcat.websocket.server.WsContextListener

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:149) ~[tomcat-embed-websocket-8.0.32.jar:8.0.32]
    ……

一番苦查,终于找到了问题的原因:http://blog.youkuaiyun.com/mjt_284321/article/details/62418379

解决

我本地的tomcat版本是7.0.69,而spring boot默认使用到了tomcat8.0.32,所以就出现了方法找不到。在maven配置文件pom.xml中加上:

<properties>
        <tomcat.version>7.0.69</tomcat.version>
    </properties>

终于运行成功。

另外书中指出了另外一个坑也被我完美的踩到:

基于Spring boot应用,由于当前应用包含了一个可直接运行的Application类,所以在开发过程中,大家很容易在IDE(如IDEA工具)中单机鼠标右键运行当前类。虽然可以启动当前应用,在非Web应用中可能不会有什么问题,但在Web应用中,如果采用上述方法直接运行应用,那么在访问有视图的页面时(如JSP),会一直报404错误。
因为直接运行当前启动类,Spring Boot无法找到当前页面资源。因此,基于Spring Boot的应用在开发调试的时候,一定要基于Spring Boot提供的spring-boot-maven-plugin插件命令来运行应用或通过Spring Boot命令行来运行应用。

直接运行当前类是这个样子:

Whitelabel Error Page

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔天逸

没有钱用,只能写写博客这样子~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值