java - Spring错误-线程中的异常 "main"java.lang.ExceptionInInitializerError

标签 java spring

作为 Java 应用程序运行时,我收到错误 Exception in thread "main"java.lang.ExceptionInInitializerError

这是针对 Spring 的,我创建了一个 SpringConfig.xml 文件,使用 ApplicationContext 接口(interface)从 TestSpringProject 类调用它。我没有使用依赖工具..只是导入了 spring 所需的 jar

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>

餐厅.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)

最佳答案

我认为问题的根本原因在于您自己所说的那句话:

I had not used and dependency tool..just imported the required jars of spring

Spring 本身依赖于第三方库,例如 commons-logging。 通常依赖管理工具(从这个角度来看像maven)有一个传递依赖的概念,这意味着如果你的项目依赖于spring并且spring依赖于公共(public)日志记录,那么你实际上依赖于公共(public)日志记录,从某种意义上说你将无法即使您的代码本身不依赖于公共(public)日志记录,也可以运行该项目。

所以你至少应该导入这个公共(public)日志jar,但是我真的建议你在一些可以解决这些传递依赖关系的构建工具中管理项目,因为即使你解决了这个问题,还会有其他类似的问题.

关于java - Spring错误-线程中的异常 "main"java.lang.ExceptionInInitializerError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57644363/

相关文章:

java - 在特定文档的不同副本中打印不同的值(副本编号)

java - MPAndroidChart 值没有像我提到的那样出现?

java - 当按钮没有名称或 ID 时,我应该使用什么作为 `click()` 方法的参数?

java - 使用 Spring Batch 从数据库表中部分提取

java - 如何在 Spring 中将资源类型从 ServletContextResource 更改为 FileSystemResource

java - 如何进行非事务性 Spring 测试

java - 使用内存将文件添加到 zip java,同时避免保留文件名问题

java - 杰斯帕 : SSO using a "local logon"

java - 访问构造的注释参数进行修改

java - 有没有一种 Spring 方法来检查网页是否仍然存在?