首页 > 编程语言 >Caused by: java.lang.NullPointerException at org.springframework.beans.factory.support.DefaultLis

Caused by: java.lang.NullPointerException at org.springframework.beans.factory.support.DefaultLis

时间:2022-12-02 21:01:03浏览次数:65  
标签:lang java DefaultLis cl ClassLoader getClassLoader DefaultListableBeanFactory 加载


在搭建完Spring环境之后运行第一个demo的时候 就碰到这个问题,折腾了一天了,到现在才解决,记录一下自己的失误。

解决办法就是在添加user Library的时候 不能勾选System Library,否则后面运行demo的时候会提示空指针异常,这个真的是很郁闷。

Caused by: java.lang.NullPointerException    at org.springframework.beans.factory.support.DefaultLis_java

下面内容为转载的,就是看了别人的博客才发现自己的失误的,学习大神的分析思路:

Caused by: java.lang.NullPointerException
at org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>(DefaultListableBeanFactory.java:106)
... 7 more

一看源代码,是这样的:

static{  
ClassLoader cl =DefaultListableBeanFactory.class.getClassLoader();
try{
javaxInjectProviderClass = cl.loadClass("javax.inject.Provider");//Line 106
}
catch(ClassNotFoundException ex){
// JSR-330 API not available - Provider interface simply not supported then.
}
}

源代码的问题在于:

ClassLoader cl =DefaultListableBeanFactory.class.getClassLoader();返回空!

找了找网上:发现别人也遇到过:

​http://stackoverflow.com/questions/2272354/why-do-i-get-a-nullpointerexception-when-initializing-spring​

再了解了一下getClassLoader() 的原理:

​http://blog.chenlb.com/2009/06/java-classloader-architecture.html​

原来是这个DefaultListableBeanFactory通过BootStrap直接加载,getClassLoader()的时候返回null

JDK上也有说明:

“public ClassLoader ‍getClassLoader()返回该类的类加载器。有些实现可能使用 null 来表示引导类加载器。如果该类由引导类加载器加载,则此方法在这类实现中将返回 null。 “

细细想来,原来是这里错了:勾选了System library(added to the boot class path),DefaultListableBeanFactory被当成系统Jar通过BootStrap直接加载


标签:lang,java,DefaultLis,cl,ClassLoader,getClassLoader,DefaultListableBeanFactory,加载
From: https://blog.51cto.com/linmengmeng/5907473

相关文章

  • Java编码小技巧
    你在写一个方法的时候,例如传入两个数组,而你要写的方法代码块又恰好有一种判断方式会导致你要写两个相同代码块,你就可以自己调用自己,并把传参顺序换一下publicint......
  • golang的插入排序算法
    1、什么是插入排序?先看一个例子:{7,6,1,9,3}无序数列中,我们约定好无序数列的第一个元素7作为有序数列{7},然后分别对{6,1,9,3}的数与7进行比较移位得到新的有序数列。第一次迭......
  • eclipse中编写Java程序出现Resource leak: 'input' is never closed解决方法
     菜鸟新手,在​​Java​​的简单程序编写过程中,如上代码出现了小小的提示,这种简短的小程序,不关闭也可以运行出正确的结果,由于强迫症,对于这点小毛病也是不能容忍的,再查了百......
  • 【Java基础】setter与getter方法
    没看懂为什么要用这两个方法,先记着吧。在知乎上别人贴上的两个地址,留着以后写的多了,见识的多了,再次回头看这些的时候作为参考吧​​​https://stackoverflow.com/questions......
  • JAVA网络爬虫
    一、前置背景1、URL定义   统一资源标识符(UniformResourceIdentifier,URL)是采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。Java......
  • java语言——跨平台原理,jre,jdk
    day1Java是一种混合的编译运行方式:编译+解释(虚拟机)java的跨平台:在虚拟机中运行(jvm)jdk:jvm,核心类库,开发工具(开发环境)jre:Java的运行环境 ......
  • 【JAVA】基于SpringSecurity登录的详细教程
    不知道抽起哪根筋,花了一周的时间终于写了个基于springsecurity的登录的样例,4、5年前在学springboot时曾经按书上的例子却怎么也写不出来,算是了却自己的一桩心愿吧。当然,我不......
  • java常见的延迟队列实现方式
    参考如下:https://www.jianshu.com/p/977466020144/redission延迟队列的实现https://www.cnblogs.com/better-farther-world2099/articles/15216447.html......
  • Java常用类-Objec和Objects
    Java常用类之Object类基本介绍包地址:java.lang.ObjectClassObject是类Object结构的根。每个class都有Object作为超类。所有对象(包括数组)都继承这个类。构造方法pub......
  • java copyFile
     javacopyFile publicstaticvoidcopyFile(FileoldFile,FilenewFile)throwsIOException{FileInputStreamfis=newFileInputStream(oldFile);Fil......