【问题标题】:java spring framework code doesn't runjava spring框架代码不运行
【发布时间】:2017-06-02 08:29:20
【问题描述】:

我有这个代码

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;*/
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DrawingApp {
public static void main(String[] args) {


    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

    Triangle triangle = (Triangle) context.getBean("triangle");


 triangle.draw();
   }
 }

我收到了这个错误

2017 年 1 月 17 日晚上 11:14:48 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO:正在刷新 org.springframework.context.support.ClassPathXmlApplicationContext@6576fe71: 启动日期 [2017 年 1 月 17 日星期二 23:14:48 EST];上下文层次的根 2017 年 1 月 17 日晚上 11:14:48 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:从类路径加载 XML bean 定义 资源 [spring.xml] 线程“main”中的异常 org.springframework.beans.factory.BeanDefinitionStoreException: IOException 从类路径资源解析 XML 文档 [spring.xml];嵌套异常是 java.io.FileNotFoundException: class 路径资源 [spring.xml] 不存在,无法打开 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243) 在 org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) 在 org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 在 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) 在 org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83) 在 fahad.DrawingApp.main(DrawingApp.java:14) 引起: java.io.FileNotFoundException:类路径资源 [spring.xml] 不能 被打开,因为它不存在于 org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) ... 13 更多


顺便说一句,spring.xml文件和.classpath在同一个文件夹,

那么我应该怎么做才能运行这段代码呢?

谢谢

【问题讨论】:

  • 您的 spring.xml 不在运行时类路径中。也就是说,使用 Spring Boot 和 Spring Initializr,它将为您自动生成一个完全启动的应用程序。
  • spring.xml 应该在资源文件夹中,如果你使用的是 maven
  • 它清楚地说 - java.io.FileNotFoundException: 类路径资源 [spring.xml]。添加项目结构的屏幕截图。
  • 项目结构@SrikanthA 是什么意思
  • 我没用maven,spring文件在项目文件夹@kuhajeyan

标签: java xml spring spring-mvc


【解决方案1】:

它与.classpath文件无关,spring期望在classpath中找到spring.xml文件,意思是在你的class文件所在的目录中。

如果您遵循 maven 约定来布置项目,那么您可以将 spring.xml 放在 src/main/resources 下,您可以将其指定为 eclipse 中的源文件夹。无论如何,将文件与您的代码一起放在源文件夹中。 ide 会将它在其中找到的所有文件复制到您的类路径中。

【讨论】:

  • 所以你的意思是Drawingapp.java和Triangle。 java 和 spring.xml 应该在同一个文件夹,即 src/mypackage/
  • @khaled:把spring xml直接放在src下,不在mypackage下。
  • 谢谢它有效,我还有一个问题先生,我怎么知道我有没有JIT,因为我听说它带有JVM,我有java 8 update 91,我好吗?
【解决方案2】:

为了更清晰的图片,请参考这里-Class Path - Documentation, Java

类路径是Java运行环境搜索的路径 用于类和其他资源文件

默认的类路径是当前目录。设置类路径 变量或使用 -classpath 命令行选项覆盖 默认,所以如果你想在搜索中包含当前目录 路径,必须包含“.”在新设置中。

另外,请参考ClassPathXmlApplicationContext。如果你放在 src 文件夹中,它会被引用。

需要教程???,试试这里的源代码ClassPathXmlApplicationContext-Tutorial- 它使用 ClassPathXmlApplicationContext。

【讨论】:

  • 谢谢它的工作,我还有一个问题先生,我怎么知道我有没有jit,因为我听说它是​​JVM自带的,我有java 8 update 91,我好吗?
猜你喜欢
  • 2021-03-22
  • 2010-10-28
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多