【问题标题】:I am trying to run this first Spring program using XML and I am getting following error. I am novice in this, Please guide me我正在尝试使用 XML 运行第一个 Spring 程序,但出现以下错误。我是新手,请指导我
【发布时间】:2022-01-16 08:00:40
【问题描述】:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DrawingApp {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring.xml");
        Triangle triangle= (Triangle) applicationContext.getBean("triangle");
        triangle.draw();
    }
}

public class Triangle {
    public void draw()
    {
        System.out.println("Triangle Class");
    }
}

这是Java程序。

    <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
    <bean id="triangle" class="Triangle"/>
</beans>

这是 XML 文件。 当我尝试运行这个程序时,我收到以下错误

14:32:12.644 [main] 调试 org.springframework.context.support.ClassPathXmlApplicationContext - 刷新 org.springframework.context.support.ClassPathXmlApplicationContext@721e0f4f 线程“主”org.springframework.beans.factory.BeanDefinitionStoreException 中的异常:IOException 从类路径资源 [Spring.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException: 类路径资源 [Spring.xml] 无法打开,因为它不存在 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:257) 在 org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:128) 在 org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:94) 在 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) 在 org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:144) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:85) 在实践中。DrawingApp.main(DrawingApp.java:9) 原因:java.io.FileNotFoundException:类路径资源[Spring.xml]无法打开,因为它不存在 在 org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:199) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:333) ... 13 更多

我也在 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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="triangle" class="Triangle"/>
</beans

然后我也遇到同样的错误

指导我完美地完成这个春季编程。

【问题讨论】:

标签: java spring


【解决方案1】:

您的 XML 文件位于错误的目录中。 ClassPathXmlApplicationContext 在 Java classpath 上搜索它。 Java 类路径的目的是定位可用的已编译类文件,但在其中放置运行时配置文件也变得很常见。

如果您使用 Maven 构建您的项目,您可以将您的 Spring.xml 文件放入 src/main/resources。 Maven 会将其内容复制到执行期间将位于类路径中的文件夹中。

【讨论】:

  • 按你说的试过了,还是报错
  • 你能分享你的项目吗?
  • 我正在使用 IntelliJ 社区版,告诉我该怎么做?
  • 在磁盘上找到您的项目文件夹,将其归档并上传到 Google Drive 或其他东西。
【解决方案2】:

这是因为你还没有启动 Spring 容器。您必须拨打ClassPathXmlApplicationContext.refresh() 才能启动它。

还有一点就是你没有配置XML配置文件的位置。

所以假设XML配置文件名为config.xml,请改成如下:

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext();
applicationContext.setConfigLocations("config.xml");
applicationContext.refresh();

或者简单地说:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("config.xml");

它会在掩护下自动调用refresh()

【讨论】:

  • 我已经这样做了,但仍然显示错误,并且 XML 文件也在正确的类路径中
  • @Ajay9 请将更新添加到您的问题中,而不是直接更新问题。因为它导致我的答案在您直接更新后与您的问题不匹配,并导致某些人对我的答案投反对票。谢谢。
  • 好的,肯,谢谢你让我认识肯!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2021-04-03
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多