springboot启动后卡住 无日志的几种情况

大家好,我是烤鸭:
     今天分享一下springboot启动后无日志的问题。

1.场景复现


springboot项目启动后卡住无日志,肯定是报错了或者其他原因,并且日志没有打印出来。
    1.1 说一下比较通用常见的场景。
    检查一下 是否 exclude了springboot自带的日志包,放开后可能就有具体的错误原因了。

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.0.5.RELEASE</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>

    1.2 不太常见的场景
    加载到如下图的地方,直接停了。

    或者直接打印 INFO  [class:org.apache.juli.logging.DirectJDKLog | method:log | line:180] logInfo==> Stopping service [Tomcat],没有打印具体的报错信息

    是具体报错的地方用的日志框架和你本身项目中的冲突了。
    1.2.1 apollo忘记配置
    比如就拿我们项目来说,apollo少配了一个key,项目直接启动失败,只是报了上面的错误信息,没有报出具体报错信息。
    apollo加载的时候用的日志框架或者版本不一致导致的,一般来说log4j,slf4j,logback这些都会引用,但是版本很难统一,尤其引用了其他的第三方包。
    在apollo那个问题上,将commons-logging的冲突解决后保留 1.1.1 版本,就打印出报错信息了。

<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version>
</dependency>


    1.2.2 tomcat版本冲突
    去除第三方引用的不同版本的tomcat依赖,仅保留一个

    <exclusions><exclusion><artifactId>spring-boot-starter-tomcat</artifactId><groupId>org.springframework.boot</groupId></exclusion><exclusion><artifactId>spring-boot-starter-web</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions>

    1.2.3 apollo引用的包找不到
    找不到 gson 包,这个和上面那个类似,也是apollo加载的时候失败了,后来日志打印出来了,问题也比较好找,加上gson依赖。

Caused by: java.util.ServiceConfigurationError: com.ctrip.framework.apollo.internals.Injector: Providercom.ctrip.framework.apollo.internals.DefaultInjector could not be instantiatedat java.util.ServiceLoader.fail(ServiceLoader.java:232)at java.util.ServiceLoader.access$100(ServiceLoader.java:185)at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)at java.util.ServiceLoader$1.next(ServiceLoader.java:480)at com.ctrip.framework.foundation.internals.ServiceBootstrap.loadFirst(ServiceBootstrap.java:14)at com.ctrip.framework.apollo.build.ApolloInjector.getInjector(ApolloInjector.java:20)... 26 common frames omittedCaused by: com.ctrip.framework.apollo.exceptions.ApolloConfigException: Unable to initialize Guice Injector!at com.ctrip.framework.apollo.internals.DefaultInjector.<init>(DefaultInjector.java:30)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at java.lang.Class.newInstance(Class.java:442)at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)... 30 common frames omittedCaused by: com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: Lcom/google/gson/Gson;

    1.2.4 项目改成打包lib目录后,部分包打包不完整
    这个问题是最棘手了,找了一天,之前由于项目打jar包过大,想把jar和第三方不常用的包分开,打成jar和lib,具体可以看这篇。
    https://blog.csdn.net/Angry_Mills/article/details/105024664

    同样的pom依赖,在改成lib之后就启动停止,INFO  [class:org.apache.juli.logging.DirectJDKLog | method:log | line:180] logInfo==> Stopping service [Tomcat]
    只能把原来的100多M的jar解压缩后和新方式打的lib目录做对比,最后发现第三方包在循环依赖后打包有问题,大小也不一样。lib目录只打了自己那层,没有打循环依赖那些包,导致加载的时候报错了。
    

2.解决思路


    总结一下,出现的问题场景。
    2.1 springboot 本身日志被排除了,tomcat版本不一致
    2.2 apollo找不到key 由于 commons-logging 版本过高
    2.3 找不到gson包
    2.4 打包lib目录后,循环依赖的包和单次依赖打包大小不一致,导致部分类缺失

    如果项目是个新项目,搭建工程的时候尽量保证使用的第三方包的兼容性。如果是老的项目,加新包的时候要注意,尽量避免冲突,以之前的包为准。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware下Centos7快速搭建vsftpd

最简单快捷的实现ftp的功能,不考虑安全问题. 1.配置防火墙和selinux vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX can take one of these three values: # enforcing - SELinux security policy is enforced. # per…

[css] 写出div在不固定高度的情况下水平垂直居中的方法?

[css] 写出div在不固定高度的情况下水平垂直居中的方法&#xff1f; 我知道的有两种方法<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style>* {padding: 0;margin: 0;}/* flex居中 …

hession调用json解析异常 com.caucho.hessian.io.HessianProtocolException: expected integer at 0x74 java.util

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;使用hession报错 expected integer at 0x74 java.util.ArrayList。 1. 报错信息如下&#xff1a; 2020-03-18 14:27:48.057 [TID: N/A] [Apollo-RemoteConfigLongPollService-1] WARN [class:com.ctrip.fr…

[css] 移动端的布局用过媒体查询吗?写出例子看看

[css] 移动端的布局用过媒体查询吗&#xff1f;写出例子看看 media [type] and [condition] … not [condition] {… } media [condition] and/or/not [condition] … {… }其中&#xff1a;type "all" | "print" | "screen" | "speech&q…

Java通过cal.get(Calendar.MONTH)比真实月份少一个月

Calendar cal Calendar.getInstance();假如当前是12月&#xff0c;cal.get(cal.MONTH)是11月。 转载于:https://www.cnblogs.com/zhaogaojian/p/10050884.html

PMP读书笔记(第1章)

大家好&#xff0c;我是烤鸭&#xff1a;     今天做一个PMP的读书笔记。 第一章 引论1.1 概述指南和目的1.1.1 项目管理标准1.1.2 通用词汇1.1.3 道德与专业行为规范1.2 概述指南和目的1.2.1 项目1.2.2 项目管理的重要性1.2.3 项目、项目集、项目组合以及运营管理之间的关…

数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)

题解&#xff1a;选点&#xff0c;选最小权的边&#xff0c;更新点权。可以手动自行找一遍怎么找到这个最小的生成树&#xff0c;随便选一个点放入我们选的集合中&#xff0c;然后看和这个点相连的点中&#xff0c;与那个点相连的那条边权值是最小的&#xff0c;选择之后&#…

[css] CSS的伪类和伪对象有什么不同?

[css] CSS的伪类和伪对象有什么不同&#xff1f; 伪类是给当前选中节点添加新样式&#xff0c; 伪对象是给当前选中节点添加伪元素。 伪类选择器使用&#xff1a;&#xff0c;伪对象选择器使用&#xff1a;&#xff1a;&#xff0c;因为兼容旧版&#xff0c;所以伪对象使用&am…

PMP读书笔记(第2章)

大家好&#xff0c;我是烤鸭&#xff1a;     今天做一个PMP的读书笔记。 第二章 项目运行环境2.1 概述2.2 事业环境因素2.2.1 组织内部的事业环境因素2.2.2 组织外部的事业环境因素2.3 组织过程资产2.3.1 过程、政策和程序2.3.2 组织知识库2.4 组织系统2.4.1 概述2.4.2 组…

[css] CSS的overflow属性定义溢出元素内容区的内容会如何处理呢

[css] CSS的overflow属性定义溢出元素内容区的内容会如何处理呢 visible&#xff08;默认值&#xff09;&#xff1a;溢出的内容会照常显示在元素内容区之外&#xff1b;hidden&#xff1a;溢出的内容会被裁剪&#xff1b;scroll&#xff1a;溢出的内容会出现在滚动区&#xff…

do文件的编写(转)

以前在使用ModelSim进行仿真的时候&#xff0c;一直是使用其GUI进行操作的&#xff0c;但是这样很繁琐也很费时。故希望学习其自动化仿真do文件&#xff0c;下面是学习的一些总结。 一、编写基本的do文件 下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令。 1、quit…

PMP读书笔记(第3章)

大家好&#xff0c;我是烤鸭&#xff1a;     今天做一个PMP的读书笔记。 第三章 项目经理的角色3.1 概述3.2 项目经理的定义3.3 项目经理的影响力范围3.3.1 概述3.3.2 项目3.3.3 组织3.3.4 行业3.3.5 专业学科3.3.6 跨领域3.4 项目经理的能力3.4.1 概述3.4.2 技术项目管理…

PMP读书笔记(第4章)

大家好&#xff0c;我是烤鸭&#xff1a;     今天做一个PMP的读书笔记。 第四章 项目整合管理概述项目整合管理的核心概念项目整合管理的发展趋势和新兴实践裁剪时需要考虑的因素在敏捷或适应型环境中需要考虑的因素4.1 制定项目章程4.1.1 制定项目章程&#xff1a;输入4.…

[css] 外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?

[css] 外层有一个自适应高度的div&#xff0c;里面有两个div&#xff0c;一个高度固定300px&#xff0c;另一个怎么填满剩余的高度&#xff1f; 可以设置外层自适应高度的容器为flex布局&#xff0c;利用flex-basis属性即可实现自动填满剩余高度&#xff1b;代码如下&#xff…

vue之watch用法

watch是一个对象&#xff0c;键是需要观察的表达式&#xff0c;值是对应回调函数。值也可以是方法名&#xff0c;或者包含选项的对象 watch:{ //属性     msg: function(newVal,oldVal){console.log(oldVal改变成newVal)},  //函数msg1(newVal,oldVal){console.log(oldV…

PMP读书笔记(第5章)

大家好&#xff0c;我是烤鸭&#xff1a;     今天做一个PMP的读书笔记。 第五章 项目范围管理项目范围管理项目范围管理的核心概念项目范围管理的发展趋势和新兴实践裁剪时需要考虑的因素在敏捷或适应型环境中需要考虑的因素5.1 规划范围管理5.1.1 规划范围管理&#xff1…

[css] 说说你对CSS样式覆盖规则的理解

[css] 说说你对CSS样式覆盖规则的理解 1.选择器的权重覆盖&#xff1b; 2.相同选择器的顺序覆盖&#xff1b; 3.行内样式>内联样式>外联样式个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主…

特殊符号作用

单引号&#xff1a;保留括起的所有字符的字面值。取消多个字符的特殊含义双引号&#xff1a;$、反引号&#xff08;可替换成$()&#xff09;、反斜杠特殊含义保留下来&#xff0c;而其他特殊符号只保留字面值。取消多个字符的特殊含义\作为转义字符&#xff0c;仅取消单个字符的…

[css] 写出几个初始化CSS的样式,并解释说明为什么要这样写

[css] 写出几个初始化CSS的样式&#xff0c;并解释说明为什么要这样写 padding:0; margin:0;为了解决各个浏览器显示不一样的问题个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起…

php中foreach循环遍历二维数组

最近在用tp3.2框架&#xff0c;在查询的时候用到了select()&#xff0c;这条语句返回的是二维数组&#xff0c;所以在对返回的数据做处理时&#xff0c;遇到了些麻烦&#xff0c;百度了下foreach&#xff0c;终于用foreach解决了数据的筛选问题 &#xff08;因为不知道该怎么设…