作为Java应用程序运行时,我在线程“主” java.lang.ExceptionInInitializerError中收到错误Exception
这是针对Spring的,我使用ApplicationContext接口从TestSpringProject类创建了一个SpringConfig.xml文件来调用它。我没有使用和依赖工具..只是导入了所需的弹簧罐
TestSpringProject.java:
public class TestSpringProject {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context = new ClassPathXmlApplicationContext("SpringConfig.xml");
Restaurant res = (Restaurant) context.getBean("restaurantBean");
res.greetCustomer();
}
}
SpringConfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="restaurantBean" class="com.packages.Restaurant.java">
</bean>
</beans>
Restaurant.java:
public class Restaurant {
public void greetCustomer() {
System.out.println("Welcome Customer");
}
}
预期结果:欢迎客户
实际结果:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:160)
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:230)
at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:92)
at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:59)
at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:62)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:141)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
at com.packages.TestSpringProject.main(TestSpringProject.java:11)
Caused by: java.lang.NullPointerException
at org.apache.commons.logging.LogFactory.<clinit>(LogFactory.java:71)
答案 0 :(得分:0)
我认为问题的根本原因在于您自己说的一句话:
我没有使用过依赖工具。只是导入了所需的弹簧罐
Spring本身依赖于第三方库,例如commons-logging。 通常,依赖项管理工具(从这个角度来看像maven)具有传递依赖项的概念,这意味着,如果您的项目依赖于spring并且spring依赖于commons日志记录,那么您实际上将依赖于common日志记录,这意味着您将无法即使您的代码不依赖于commons-logging本身也可以运行该项目。
因此,您至少应导入此公用日志记录罐,但是,我确实建议您使用一些可以解决这些传递性依赖关系的构建工具来管理项目,因为即使您要解决此问题,也会有其他类似问题
答案 1 :(得分:0)
您的代码运行正常,相关性(jar)可能存在一些问题。您可以尝试从此处下载最新版本-https://repo.spring.io/release/org/springframework/spring/