首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记录一次 Spring boot 应用排错过程

开发反馈,突然在本地启动不起来了,表象特征就是在本地IDEA上运行时,进程卡住也不退出,应用启动时加载相关组件的日志也不输出。症状如下图: ?...一般情况下,在服务器环境,我们会使用java工具包中的jstack 工具来查看:如jstack pid(应用java进程)。...出现NoSuchMethodError异常,是因为调用方法的时候,找不到方法了。一般出现在两个有关联的jar包,但是版本对不上了,也就是常说的jar版本依赖冲突。...在定位到问题后,如NoSuchMethodError这样的异常,需要平时的经验积累来假设问题的真实原因,然后在追本溯源验明问题所在根本原因。找问题本质一定要这种循序渐进的思路。...举例,出现这种问题,如果你直接去搜索引擎搜:“Spring boot应用启动卡住了”,是搜不出来什么东西的,但是当你发现了是由于jar冲突。

82410

记一次SpringBoot项目启动卡住问题排查记录

开发反馈,突然在本地启动不起来了,表象特征就是在本地IDEA上运行时,进程卡住也不退出,应用启动时加载相关组件的日志也不输出。症状如下图: ?...一般情况下,在服务器环境,我们会使用java工具包中的jstack 工具来查看:如jstack pid(应用java进程)。...出现NoSuchMethodError异常,是因为调用方法的时候,找不到方法了。一般出现在两个有关联的jar包,但是版本对不上了,也就是常说的jar版本依赖冲突。...在定位到问题后,如NoSuchMethodError这样的异常,需要平时的经验积累来假设问题的真实原因,然后在追本溯源验明问题所在根本原因。找问题本质一定要这种循序渐进的思路。...举例,出现这种问题,如果你直接去搜索引擎搜:“Spring boot应用启动卡住了”,是搜不出来什么东西的,但是当你发现了是由于jar冲突。

6.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 动态代理机制 (一) JDK Proxy详解

    当调用 代理对象的接口方法时,这个对象再调用我们的回调函数,我们的回调函数再调用原对象的对应方法。从而实现代理。为了实现代理模式,Proxy 用了另外一种设计模式:命令模式。...返回的是一个 动态生成的 Proxy 对象,实现了 IHello 接口 我们在调用 这个 Proxy 对象的 sayHello() 的时候,实际上调用的是我们 handler 的 invoke 方法,然后将我们的...而在我们的逻辑中,要用 反射的方法 回调真正对象的方法来实现对象增强。在反射调用的前后,我们还执行别的一些额外的逻辑。 为什么要这么增强呢?这其实是一种 AOP 的编程方法。...在 SpringMVC 的一些逻辑操作中,我们可以用到它,比如每个方法统一鉴权,日志处理等等,我们可以在一个地方写一次代码,就可以应用到全部方法中。...根据接口名执行不同方法 当然,我们也可以不做对象增强,而是直接读取我们的接口中的方法名,做一些别的逻辑,比如 在 Mybatis 中,我们只要定义接口,然后经过工厂返回一个 Proxy 对象,我们就可以调用到真正的逻辑代码

    77110

    Java面试集锦(一)之Java异常

    Java中的异常处理关键字是什么 java异常处理中使用了四个关键字。 throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。...throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。...Java中Checked和Unchecked Exception有什么区别 Checked Exceptions应该使用try-catch块在代码中处理,否则方法应该使用throws关键字让调用者知道可能从方法抛出的已检查异常...未经检查的异常主要是由编程不良引起的,例如在对象引用上调用方法时的NullPointerException,而不确保它不为null。例如,我可以编写一个方法来从字符串中删除所有元音。...主线程java.lang.NoSuchMethodError中的异常: main:当您尝试运行没有main方法的类时会出现此异常。

    1K40

    【读码JDK】-java.lang包介绍

    比如定义了一个抽象方法,其中一个方法需要子类实现,不希望用户直接通过抽象方法调用,就可以在该方法中抛出该异常 Appendable 一个接口,定义了基本方法,用于将char序列追加到对象中,如StringBuilder...在未实现Cloneable接口的实例上调用Object的clone方法会导致抛出异常CloneNotSupportedException 。...IllegalStateException 表示在非法或者不适当的时间调用了方法 IllegalThreadStateException 线程未处于所请求操作的适当状态,将抛出异常 IncompatibleClassChangeError...NoSuchMethodException 无法找到特定方法时抛出 NullPointerException 当应用程序在以下情况尝试使用null时抛出。 这些包括: 调用null对象的实例方法。...,例如基本指数,对数,平方根和三角函数 与Math中的方法类同,两种有互相调用 String 表示字符串,字符串不可变,值在创建后无法修改,并存与字符串缓冲区中 StringBuffer 线程安全的,

    1.6K20

    Jar包冲突及java.lang.NoSuchMethodError异常解决方案

    问题 在编码过程中,往往会遇到jar包冲突的问题。问题的表现特征一般都是抛出java.lang.NoSuchMethodError异常。那么,今天就聊聊怎么解决此类问题。...它是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。...然而,如果在类路径下放置了多个不同版本的类包,如commons-lang 2.x.jar和commons-lang3.x.jar都位于类路径中,代码中用到了commons-lang3.x类的某个方法,而这个方法在...commons-lang2.x中并不存在,JVM加载类时碰巧又从commons-lang 2.x.jar中加载类,运行时就会抛出NoSuchMethodError的错误。..."); out.print("错误:" + error); } }catch(Exception e) { out.print("异常。"

    1.3K40

    从@PostConstruct重新认识初始化

    -tunlp | grep port 怀疑springboot启动卡住了,查看日志看到刷屏报错: 代码中查看报错位置,发现某个类使用了@PostConstruct初始化,并且初始化方法调用了异步任务...方法中实现,@PostConstruct在initializeBean方法中实现。...前边preInstantiateSingletons方法执行逻辑是拿到BeanDefination列表后循环执行的,在我们代码中定义用@Service、@Component和@Repository定义的类在启动阶段定义成...3.为什么进程在,端口监听失败? 其实这个问题可以拆解一些,springboot启动卡住了没有启动成功也没有关机。 没有启动成功的原因是容器上下文刷新失败,正常情况下不会去监听端口,也不会启动成功。...,启动卡住了等等一系列问题。

    47840

    干货分享|Java异常经典14问,你都能答对吗?

    2、Java中的异常处理关键字是什么? java异常处理中使用了四个关键字。 throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。...throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。...此方法getMessage()的可抛出类实现只是使用方法来返回异常消息。 synchronized Throwable getCause() - 此方法返回异常的原因或null id,原因未知。...未经检查的异常主要是由编程不良引起的,例如在对象引用上调用方法时的NullPointerException,而不确保它不为null。例如,我可以编写一个方法来从字符串中删除所有元音。...主线程java.lang.NoSuchMethodError中的异常: main:当您尝试运行没有main方法的类时会出现此异常。

    90820

    精神哥讲Crash(二): java.lang.NoSuchMethodError

    奈何精神哥太胖,肚子太大爬不进烟囱了,想着大家肯定也在加班没法做到偷偷,就单方面决定还是给大家送文章吧!...()方法是Android 4.2增加的,在这之前的系统肯定找不到这个方法,所以在4.2之前的设备上都会Crash!...field, @hide removes that node and all of its children from the documentation.这个API压根不想让你看到,更别说让你使用了...java.lang.NoSuchMethodError在Bugly影响力排行榜中稳居第4,就能看出Android程序员所面对的Android市场,碎片化有多么的严峻了!...精神哥想不出可以一劳永逸的解决方法,在这里再给大家总结几个私人建议(欢迎拍砖): 开发阶段用Android Lint,静态检查代码中API兼容性。

    1.5K50

    Java异常面试问题

    Java中的异常处理关键字是什么? java异常处理中使用了四个关键字。 throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。...throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。...此方法getMessage()的可抛出类实现只是使用方法来返回异常消息。 synchronized Throwable getCause() - 此方法返回异常的原因或null id,原因未知。...未经检查的异常主要是由编程不良引起的,例如在对象引用上调用方法时的NullPointerException,而不确保它不为null。例如,我可以编写一个方法来从字符串中删除所有元音。...主线程java.lang.NoSuchMethodError中的异常: main:当您尝试运行没有main方法的类时会出现此异常。

    1K30

    Java设计模式-代理模式 理论代码相结合

    方法参数说明: proxy : 代理对象 method : 对应于在代理对象上调用的接口方法的 Method 实例...中的一个tools.jar的工具) 注意:(如果是其他的版本好像启动不了,我是电脑中有8和11,8没有配置环境变量,然后的话,就一直报错,我就将idea换成jdk8的版本,重新编译了,然后直接cmd在jdk8...当在与其关联的代理实例上调用方法时,将在调用处理程序上调用此方法。...在测试类中通过代理对象调用sell()方法 2. 根据多态的特性,执行的是代理类($Proxy0)中的sell()方法 3....代理类($Proxy0)中的sell()方法中又调用了InvocationHandler接口的子实现类对象的invoke方法 4. invoke方法通过反射执行了真实对象所属类(TrainStation

    32830

    Java线上问题排查神器Arthas快速上手与原理浅谈

    现在,我们有了更为优雅的线上调试方法,来自阿里巴巴开源的Arthas 下图是Arthas文档中对于为什么要使用它的描述,我进行了精简: ?...在Arthas中你可以利用ognl表达式语言做很多事,比如执行某个方法,获取某个信息,甚至进行修改。 ?...某功能Bug导致服务器返回500 首先通过trace看异常报错的方法,之后通过tt排查方法,发现入参进来后,居然走错了方法(因为多态),走到了返回null的方法中,所以导致了NPE空指针错误。 ?...启动 使用了阿里开源的组件cli,对参数进行了解析 com.taobao.arthas.boot.Bootstrap ? 在传入参数中没有pid,则会调用本地jps命令,列出java进程 ?...visitMethod方法里面使用了AdviceAdapter(继承了MethodVisitor类),在onMethodEnter方法, onMethodExit方法中,把Spy类对应的方法(ON_BEFORE_METHOD

    52620

    Java线上问题排查神器Arthas快速上手与原理浅谈

    现在,我们有了更为优雅的线上调试方法,来自阿里巴巴开源的Arthas 下图是Arthas文档中对于为什么要使用它的描述,我进行了精简: ?...在Arthas中你可以利用ognl表达式语言做很多事,比如执行某个方法,获取某个信息,甚至进行修改。 ?...某功能Bug导致服务器返回500 首先通过trace看异常报错的方法,之后通过tt排查方法,发现入参进来后,居然走错了方法(因为多态),走到了返回null的方法中,所以导致了NPE空指针错误。 ?...启动 使用了阿里开源的组件cli,对参数进行了解析 com.taobao.arthas.boot.Bootstrap ? 在传入参数中没有pid,则会调用本地jps命令,列出java进程 ?...visitMethod方法里面使用了AdviceAdapter(继承了MethodVisitor类),在onMethodEnter方法, onMethodExit方法中,把Spy类对应的方法(ON_BEFORE_METHOD

    68340

    线程池ThreadPool及Task调度机制分析

    近1年,偶尔发生应用系统启动时某些操作超时的问题,特别在使用4核心Surface以后。笔记本和台式机比较少遇到,服务器则基本上没有遇到过。...开发环境Surface Pro4,CPU=4 在vs中调试应用,可以明显感觉到启动时会卡3~5秒,卡住时点下暂停。...GetConfig内部通过HttpClient异步请求数据,用了 task.Wait(5000),这里也卡住了。 ? 就这样,6个线程死在这,一动不动的。...ThreadPoolX非常简单,所有异步任务都有平等获取线程的机会,不存在说前面的线程卡住了,后面线程就没有机会执行。 尽管利用率低一些,但是可以轻易避免这种死锁的发生。...was null. /// exception> public static Task Run(Action action) { return Task.InternalStartNew(

    1.6K00

    EasyGBS级联时,上级平台重启导致推流失败、画面卡住该如何解决?

    有用户反馈,在现场使用过程中,下级EasyGBS存在一个问题:如果上级EasyGBS平台重启,下级往上级推流会失败,这样会出现上级EasyGBS平台的视频画面卡住(画面定格)。...因为上级EasyGBS平台重新启动,但是下级的视频画面并没有停止,会一直往上级EasyGBS平台推流,而上级重启时,会导致平台的端口连接暂时关闭,所以此时下级往上级推流是无效的,这样会存在以下两种情况,...上述两种情况均会导致上级EasyGBS平台播放画面卡住的现象。可通过以下两种方法进行解决:1)如果是自身ip,则解决如下:如果发送数据流失败,可将tcp和udp给个回调,并断开连接。...平台视频能力灵活,能够涵盖所有视频监控领域的需求,已经在大量的项目中落地应用,如明厨亮灶、平安乡村、雪亮工程等。

    32020

    能否让APP永不崩溃—小光和我的对决

    这就要从APP的启动流程说起了,之前也说过,所有的Android进程都是由zygote进程fork而来的,在一个新进程被启动的时候就会调用zygoteInit方法,这个方法里会进行一些应用的初始化工作:...在uncaughtException回调方法中,会执行一个handleApplicationCrash方法进行异常处理,并且最后都会走到finally中进行进程销毁,Try everything to...另外有的朋友可能发现了构造方法中,传入了一个LoggingHandler,并且在uncaughtException回调方法中还调用了这个LoggingHandler的uncaughtException方法...小光的再次思考(拦截主线程崩溃的方案思想) 我们都知道,在主线程中维护着Handler的一套机制,在应用启动时就做好了Looper的创建和初始化,并且调用了loop方法开始了消息的循环处理。...所以去源码里面找找token~ 由于我们捕获的地方是在handleMessage回调方法中,所以只有一个参数Message可以用,那我么你就从这方面入手。

    57310

    通过ChatGPT使用JavaCV

    在示例中,使用的是默认的摄像头设备,表示为0。启动摄像头:调用grabber.start()方法来启动摄像头,准备开始捕获图像帧。...捕获和处理图像帧:使用一个无限循环,在每次迭代中调用grabber.grab()方法来捕获一帧图像。返回的帧对象可以被转换为Mat对象,以便进行进一步的图像处理和计算机视觉任务。...图像处理和计算机视觉任务:在获取到每一帧图像后,你可以在注释部分中对图像进行处理。这是一个重要的部分,你可以在这里应用各种图像处理算法或进行计算机视觉任务,例如人脸检测、目标追踪、图像分割等。...从重点分析中我们可以看出,获取摄像头的关键在于OpenCVFrameGrabber对象,本机摄像头一般是0。而展示画面则是使用openCV的imshow方法。...资源释放最后,学过IO的都知道,最重要的一步就是资源的释放我们这次的代码中使用了OpenCVFrameGrabber和CanvasFrame对象,最后的肯定就是对它们两个对象进行资源的释放。

    10010

    ChatGPT教你如何拉取本机摄像头

    在示例中,使用的是默认的摄像头设备,表示为0。 启动摄像头:调用grabber.start()方法来启动摄像头,准备开始捕获图像帧。...捕获和处理图像帧:使用一个无限循环,在每次迭代中调用grabber.grab()方法来捕获一帧图像。返回的帧对象可以被转换为Mat对象,以便进行进一步的图像处理和计算机视觉任务。...图像处理和计算机视觉任务:在获取到每一帧图像后,你可以在注释部分中对图像进行处理。这是一个重要的部分,你可以在这里应用各种图像处理算法或进行计算机视觉任务,例如人脸检测、目标追踪、图像分割等。...从重点分析中我们可以看出,获取摄像头的关键在于OpenCVFrameGrabber对象,本机摄像头一般是0。而展示画面则是使用openCV的imshow方法。...资源释放 最后,学过IO的都知道,最重要的一步就是资源的释放 我们这次的代码中使用了OpenCVFrameGrabber和CanvasFrame对象,最后的肯定就是对它们两个对象进行资源的释放。

    72330

    能否让APP永不崩溃—小光和我的对决

    这就要从APP的启动流程说起了,之前也说过,所有的Android进程都是由zygote进程fork而来的,在一个新进程被启动的时候就会调用zygoteInit方法,这个方法里会进行一些应用的初始化工作:...在uncaughtException回调方法中,会执行一个handleApplicationCrash方法进行异常处理,并且最后都会走到finally中进行进程销毁,Try everything to...另外有的朋友可能发现了构造方法中,传入了一个LoggingHandler,并且在uncaughtException回调方法中还调用了这个LoggingHandler的uncaughtException方法...小光的再次思考(拦截主线程崩溃的方案思想) 我们都知道,在主线程中维护着Handler的一套机制,在应用启动时就做好了Looper的创建和初始化,并且调用了loop方法开始了消息的循环处理。...所以去源码里面找找token~ 由于我们捕获的地方是在handleMessage回调方法中,所以只有一个参数Message可以用,那我么你就从这方面入手。

    73540
    领券