前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot项目启动不报错,但一启动就断开连接问题排查实录

springboot项目启动不报错,但一启动就断开连接问题排查实录

作者头像
lyb-geek
发布2019-12-13 18:08:02
7K0
发布2019-12-13 18:08:02
举报
文章被收录于专栏:Linyb极客之路

前言

这次的写文素材来源于同事的一个小项目,这个项目的需求比较简单,就是实现一个后台定时调度器,定时更新校对数据。因为这个需求实现起来不复杂,同事三下五除二,花了2天左右,就搞完了,但在运行项目的时候,却发现,启动是启动起来了,但是一启动后,项目连接就自动断开了,而且控制台也不报任何错误。

这到底是个什么鬼,才导致这种现象的产生呢?请看下文排查实录

正文

1、项目环境

  • 开发环境:window7 (4核+8G内存)
  • 使用ide:idea2019.1
  • jdk环境:jdk1.8
  • 技术选型: springboot2.2,1

2、排查思路

1、启动类上捕获异常,并加上日志,形如下

代码语言:javascript
复制
public static void main(String[] args) {

    try {
      SpringApplication.run(SpringbootVueApplication.class,args);
    } catch (Exception e) {
      log.error(e.getMessage(),e);
    }
  }

然并卵,控制台除了孤零零的显示

Disconnected from the target VM, address: '127.0.0.1:62020', transport: 'socket'

再无任何让人振奋不已的异常错误信息

2、jar版本问题或者冲突

因为这个项目采用了最新版的springboot,当时同事就怀疑是不是因为版本太高问题,后边他把版本调低,这次奇迹会来?恭喜,奇迹没来,留下仍然是这句

Disconnected from the target VM, address: '127.0.0.1:62020', transport: 'socket'

3、先注释掉业务代码,观察

因为这个项目需求还是比较简单,所以业务代码也不是很多,于是同事就在我的建议下,先注释掉业务代码,再观察一下,然而还是那句

Disconnected from the target VM, address: '127.0.0.1:62020', transport: 'socket'

雷打不动地瞅着你

4、idea问题

后边没招了,同事就怀疑是不是idea本身的问题,于是我就让同事把代码拷贝给我一份,在我自己的机子跑一下,果不其然,不是idea的问题。那问题是不是没解了,当然不是,当时的控制台完整的打印信息类似如下

代码语言:javascript
复制
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.1.RELEASE)

2019-12-06 15:20:38.664  INFO 138596 --- [           main] c.g.lybgeek.SpringbootVueApplication     : Starting SpringbootVueApplication on WIN7-linyb1 with PID 138596 (F:\springboot-vue\target\classes started by linyb1 in F:\springboot-vue)
2019-12-06 15:20:38.673  INFO 138596 --- [           main] c.g.lybgeek.SpringbootVueApplication     : No active profile set, falling back to default profiles: default
2019-12-06 15:20:40.319  INFO 138596 --- [           main] c.g.lybgeek.SpringbootVueApplication     : Started SpringbootVueApplication in 2.752 seconds (JVM running for 4.001)
Disconnected from the target VM, address: '127.0.0.1:65204', transport: 'socket'

当我看了日志,我发现该打印日志里面缺少了相应的服务端口信息,答案即将水落石出,后边我就看了一下项目pom.xml,没有看到spring-boot-starter-web这个jar,于是我就让同事加web包,然而同事不想加,理由是:这个项目本来就不是web项目,为啥要加这个jar?我就跟他说,加了,项目就可以跑起来,而且也不会断开。同事将信将疑,就加了,果然项目成功跑起来了。

总结

写这篇文章的初衷,就是为了记录一下同事的解决思路,感觉他解决问题的思路还是挺好的,他一上来,先从代码层抓起,先在可能出问题的代码层捕获异常并打日志,再从版本,最后再是从运行环境问题排查。毕竟运行环境出问题的概率会低于自己代码出问题的概率。然后有时候日志没有任何异常输出时,还可以考虑查看一下warn级别信息,或者相对敏感点的info级别信息

本文后边虽然提供了一种解决思路,但是同事最后还是没采纳。因为他始终觉得,jar的依赖要越少越好,只需要依赖必要的包,非必要的jar没必要引入。他觉得他做的项目本质就是一个普通java项目,并非web项目,引入web包虽然是解决问题,但没解决本质问题。那这个本质问题是什么呢?先卖个关子,后边会写一篇文章来解答并介绍下如何用springboot搭建一个非web项目

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 1、项目环境
      • 2、排查思路
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档