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

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

原来event是一个Spring上下文初始化失败的异常事件对象,对象里包含了具体的异常信息,如箭头所指,关键异常信息如: NoSuchMethodError:"org.springframework.util.ObjectUtils.unwrapOptional...出现NoSuchMethodError异常,是因为调用方法的时候,找不到方法了。一般出现在两个有关联的jar包,但是版本对不上了,也就是常说的jar版本依赖冲突。...因为之前的依赖是没有问题,为什么现在spring上下文会调用5.x的版本的方法呢? 所以先假设近期有开发在pom.xml里添加了新的的依赖,导致了这个问题。...在定位到问题后,如NoSuchMethodError这样的异常,需要平时的经验积累来假设问题的真实原因,然后在追本溯源验明问题所在根本原因。找问题本质一定要这种循序渐进的思路。...就会有很多的内容,很容易解决问题。

6.2K20

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

原来event是一个Spring上下文初始化失败的异常事件对象,对象里包含了具体的异常信息,如箭头所指,关键异常信息如: NoSuchMethodError:"org.springframework.util.ObjectUtils.unwrapOptional...出现NoSuchMethodError异常,是因为调用方法的时候,找不到方法了。一般出现在两个有关联的jar包,但是版本对不上了,也就是常说的jar版本依赖冲突。...因为之前的依赖是没有问题,为什么现在spring上下文会调用5.x的版本的方法呢? 所以先假设近期有开发在pom.xml里添加了新的的依赖,导致了这个问题。...在定位到问题后,如NoSuchMethodError这样的异常,需要平时的经验积累来假设问题的真实原因,然后在追本溯源验明问题所在根本原因。找问题本质一定要这种循序渐进的思路。...就会有很多的内容,很容易解决问题。 来源:http://suo.im/55CotD

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

    你知道为什么Java的main方法必须是public static void?

    Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案...因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。...2、如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class...5、当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于 main

    1.6K40

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

    话不多说,下来精神哥给大家分享的第二个Crash是“java.lang.NoSuchMethodError”。...java.lang.NoSuchMethodError 问题的根本原因是开发编译时所依赖的环境,跟实际App运行的环境不匹配。 二、错误场景分析 1、你就喜欢搞新API,这么喜新厌旧!你家妞知道不?...现状描述 谷歌还是比较小心的,精神哥发现Android的SDK及Android的亲儿子设备上,这些@Deprecated的API基本上都保留了,谷歌最多就是置空实现或直接抛出一个非法访问的异常,所以开发过程中并没有感觉到...,所以出现大量的java.lang.NoSuchMethodError的Crash!...这很有效,但也很危险,因为谷歌随时会调整,会导致你的App出现各种诡异的java.lang.NoSuchMethodError! 很多同学认为public的私有API,谷歌不会乱改,可以大胆的用。

    1.5K50

    你知道为什么Java的main方法必须是public static void?

    来源:http://suo.im/6v9d64 Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案...因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。...2、如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class...5、当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于 main

    41320

    面试官:为什么 Java 的 main 方法必须是 public static void?

    来源:suo.im/6v9d64 Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案...因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。...2.如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class...5.当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于 main

    62330

    终于搞懂,为什么 Java 的 main 方法必须是 public static void?

    总结 ---- Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案...因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。...2.如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class...5.当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于 main

    70810

    面试5年25K程序员回答不出来为什么Java的main方法必须是public static void?

    p=5107 最近接连不断面试了不少中高级程序员,我问到“为什么 Java 的 main 方法必须是 public static void?”几乎没人能回答出来。...Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案...因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。...2.如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class

    45930

    四问四答Java异常抛出和处理

    以stripe-java的request方法为例: /** * Sends the given request to Stripe's API, and returns a buffered...", Stripe.getApiBase(), e.getMessage()), e); } } 该方法向stripe API发送请求,它抛出了一个...最好提供提供处理指引,像上面提到的stripe-java的request方法的错误描述。 原始Throwable类 引起该异常的源头。保留完整信息,便于使用者定位、排查问题。...对于具体业务,如果有需要,我们还可以抽象合适的异常层级或者添加业务信息。例如stripe-java的StripeException。...在上面的stripe-java的request方法中,可以选择在request内调用内部方法遇到异常时就捕获并处理,例如主动进行1次重试,遇到特定httpcode作特定操作。 但这不是最好的处理方式。

    53610

    Java 异常进阶Java异常简介天使变恶魔无处不在的throws手足无措的API使用者疲于应付的API用户正确地使用Checked Exception

    在使用Java编写应用的时候,我们常常需要通过第三方类库来帮助我们完成所需要的功能。有时候这些类库所提供的很多API都通过throws声明了它们所可能抛出的异常。...Java异常简介 在详细介绍Checked Exception所导致的问题之前,我们先用一小段篇幅简单介绍一下Java中的异常。...在Java中,异常主要分为三种:Exception,RuntimeException以及Error。这三类异常都是Throwable的子类。...为什么这两种异常会有如此大的区别呢?因为RuntimeException所表示的是软件开发人员没有正确地编写代码所导致的问题,如数组访问越界等。...天使变恶魔 既然Java中的Checked Exception能够提高用户代码质量,为什么还有那么多人反对它呢?原因很简单:它太容易被误用了。

    53560

    为什么 main 方法是 public static void ?

    ---- 文章目录 1、为什么main方法是静态的(static) 2、为什么main方法是公有的(public) 3、为什么main方法没有返回值(Void) 4、总结 main 方法是我们学习Java...当然,很多人首先学的是C和C++,但是在Java中main方法与前者有些细微的不同,它不会返回任何值,为什么 main 方法是 public、static、void,这篇文章尝试去找到一些答案。...2、为什么main方法是公有的(public) Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问...因为main方法是公共的,JVM就可以轻松的访问执行它。 3、为什么main方法没有返回值(Void) 因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回。...4、总结 main方法必须声明为public、static、void,否则JVM没法运行程序 如果JVM找不到main方法就抛出NoSuchMethodError:main异常,例如:如果你运行命令

    34120

    Android 项目开发填坑记 - NoSuchMethodError:(java.lang.System.arraycopy)

    、System.arraycopy、Native Method 0x00:奇怪的异常 应用新版本上线后观察错误日志,发现一个奇怪的 Crash 异常信息: lang.java.NoSuchMethodError...经过查找 Android API 19~21 的系统源码,发现发生此问题的原因是 Android>=21 时,java.lang.System.arraycopy() 多了几个重载。...,但是会在 compileSdkVersion>=21 时使用重载的 arraycopy(byte[] src … ,那么运行在 Android 的手机上时就会报 java.lang.NoSuchMethodError...总结下来就是:如果你在 Android 上使用了此 Base64 工具类,并且编译时使用的 Android 版本>=21,那么在低版本上你可能会遇到 java.lang.NoSuchMethodError...: java.lang.System.arraycopy 的异常。

    81530

    (一)组件治理之多仓组件化编译的一些问题

    首先介绍下我们的项目结构,我们是组件化开发,不同的业务组件存放在各自的仓库之中,组件通过提供 api 的方式供其他业务调用,大致效果图如下: 实现层模块与模块之间不直接依赖,只通过依赖 api 层服务发现的机制来触发实现层的调用...我们的版本开发是走班车制度,每个版本都会有很多的需求上车,每个需求的合入都是打好 release 组件合入壳工程,如果对外暴露的 API 模块或是底层模块稍有不注意外部的调用情况,就会出现很多隐蔽的编译问题被带到运行时...2、运行时的 NoClassDefFoundError、NoSuchMethodError、NoSuchFieldError 异常 这类异常贡献了主要力量,主要集中在高版本不兼容低版本上,例如只升级了...3、kotlin 的默认参数 kotlin 的语法糖在背后做了很多事情,因为新版本对 data class 新增了个默认参数,导致使用到这个 data class 的组件报了 java.lang.NoSuchMethodError...方法,如果在壳工程上直接升级 compileSDK 为 33,并且,适配文档中没有考虑到,将会在运行时发生 NoSuchMethodError 异常。

    33820

    绝佳的API设计秘诀

    您的API文档需要具有内在的可发现性和易用性 - 就像API本身一样。Stripe是一个很好的例子。它的文档易于导航,左侧边栏上有清晰的目录,以及通过Stripe API成功收取付款的简单6步流程。...例如,可以延迟推出API的异常,这些异常可能会以抽象一致性的名义改进您的产品,因此请务必找到合理的平衡点。 4.面向未来的API 今天,世界倾向于通过JSON移入和移出数据。...取决于您的受众,可能会有所不同,并且在几年内可能会有所不同。添加GraphQL API可能更好。 开发人员会查看您的API以消除其工作流程中的摩擦。...这要求它支持Stripe API的每个版本,从最初的概念到最新的推出。如果仓促或不正确地对API进行重大更改会产生严重的业务影响,这就是为什么有些公司选择与Stripe相同的版本控制方法。...如果您没有资源来构建像Stripe这样的版本化系统,那么能够很好地沟通变更是一种较低预算,较小规模的处理方式。 API版本控制可能具有不同的复杂程度。

    56220

    小白入门学习打日志

    而之前写了一篇:在公司做的项目和自己在学校做的有什么区别?中就有提到:公司的项目不会有e.printStackTrace();这种代码的存在。...这个我们可以按学JDBC的时候去理解: 无论我是接入MySQL、Oracle还是SQL Server,但我的接口永远都是那一套,切换数据库时不需要更改我的Java API 看了一下公司的项目,采用的是SLF4J...我们用Exception不就可以捕获所有的异常了么,Exception是Throwable的一个子类,但Exception已经是包含所有的Java异常了呀” 众所周知,Throwable有两个子类: Error...什么情况会抛出 NoSuchMethodError 呢?...这些情况,即 使代码编译期是正确的,但在代码运行期时,会抛出 NoSuchMethodError。

    53320

    关于Java异常Exception最常见的十大问题1 受检异常 VS 非受检异常2 异常管理的最佳实践3 为什么在try语句中定义的变量不能在catch和finally语句中使用?4 为什么Doubl

    非受检异常是由哪些在程序编译时不能被解决的问题所引起的,常见的有除以0,空指针等等。 受检异常非常重要,因为你希望其他使用你的程序API的开发者知道如何去处理这些异常。...Paste_Image.png 2 异常管理的最佳实践 如果一个异常能够被正确的处理,那么他就该捕获,反之,则该被抛出 3 为什么在try语句中定义的变量不能在catch和finally语句中使用?...throws java.lang.NullPointerException 5 Java中最常见的runtime异常,运行时异常 常见的有IllegalArgumentException ArrayIndexOutOfBoundsException...答案是可以的! 10 为什么开发者么总是默默的“消灭”异常?...,为什么不仔细处理异常呢?

    1.1K41

    ClassNotFoundException,NoClassDefFoundError,NoSuchMethodError排查

    前言 在使用java开发的过程中时常会碰到以上三个错误,其中NoClassDefFoundError、NoSuchMethodError两个error遭遇得会多一些。...本文会简单分析三个异常发生的原因,并给出排查思路和相关工具。...ClassNotFoundException的异常场景有限,所以通常遭遇得比较少,如果遭遇了只要查找classpath是是否真的存在对应的类即可。...如果你运气好的话,可能在该错误的上方看到java.lang.ExceptionInInitializerError的错误堆栈从而找到对应出错的地方;如果运气不好的话,该异常可能被吞掉,如果出问题的类你有权限修改的话...,你可以显式catch异常打印日志,如果是二方包或者三方包的话...可能要使用比较tricky的手段了。

    2K30

    为什么不建议使用Date,而是使用Java8新的时间和日期API?

    Java 8:新的时间和日期API 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,因此建议使用新的时间和日期API,分别从旧的时间和日期的API的缺点以及解决方法、Java 8...新的时间和日期API进行讲解。...旧的时间和日期的API的缺陷 Java 的 java.util.Date 和 java.util.Calendar 类易用性差,不支持时区,而且都不是线程安全的。...和 parse 方法的地方进行加锁 => 线程阻塞性能差 使用 ThreadLocal 保证每个线程最多只创建一次 SimpleDateFormat 对象 => 较好的方法 Java 8 新的时间和日期...API Java 8的日期和时间类包含 LocalDate、LocalTime、Instant、Duration 以及 Period,这些类都包含在 java.time 包中,Java 8 新的时间API

    2K30
    领券