class path resource cannot be opened because it does not exits

矫情吗;* 2022-06-10 07:06 216阅读 0赞
  1. E:\SoftwareTools\Java\jdk\bin\java ...
  2. 八月 12, 2017 10:42:56 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
  3. 信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@3f91beef: startup date [Sat Aug 12 22:42:56 CST 2017]; root of context hierarchy
  4. 八月 12, 2017 10:42:57 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext refresh
  5. 警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.yubai.EL.ELConfig]; nested exception is java.io.FileNotFoundException: class path resource [com/yubai/EL/test.properties] cannot be opened because it does not exist
  6. Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.yubai.EL.ELConfig]; nested exception is java.io.FileNotFoundException: class path resource [com/yubai/EL/test.properties] cannot be opened because it does not exist
  7. at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
  8. at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
  9. at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
  10. at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270)
  11. at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)
  12. at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
  13. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
  14. at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
  15. at com.yubai.EL.MainEl.main(MainEl.java:7)

这里写图片描述

分析思路

在路劲com/yubai/EL下存在此文件,但错误信息输出如下:

class path resource [com/yubai/EL/test.properties] cannot be opened because it does not exist

从错误信息可以看出

  1. com/yubai/EL/test.properties 这个文件不存在,但从图片中可以看出,此文件是存在的,可想而知,IDEA不是在此文件下查找的,所以test.properties不应该放在此目录下。
  2. 再查看错误信息,可以看出class path resource ,是在resource文件下查找的,在此resource文件夹下没有com/yubai/EL/test.properties,所以当我尝试在resource下创建此目录与文件后(com/yubai/EL/test.properties),再次执行就可以运行了

代码块

  1. package com.yubai.EL;
  2. import org.apache.commons.io.IOUtils;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.context.annotation.PropertySource;
  8. import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
  9. import org.springframework.core.env.Environment;
  10. import org.springframework.core.io.Resource;
  11. @Configuration
  12. @PropertySource("classpath:com/yubai/EL/test.properties")
  13. public class ELConfig {
  14. @Value("classpath:com/yubai/EL/test.txt")
  15. private Resource testFile;
  16. @Value("${book.name}")
  17. private String bookName;
  18. @Bean
  19. public static PropertySourcesPlaceholderConfigurer propertyConfigurer(){
  20. return new PropertySourcesPlaceholderConfigurer();
  21. }
  22. public void output(){
  23. try{
  24. System.out.println(bookName);
  25. System.out.println(IOUtils.toString(testFile.getInputStream()));
  26. }catch (Exception e){
  27. e.printStackTrace();
  28. }
  29. }
  30. }

Main.java

  1. package com.yubai.EL;
  2. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  3. public class MainEl {
  4. public static void main(String[] args) {
  5. AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ELConfig.class);
  6. ELConfig resource = context.getBean(ELConfig.class);
  7. resource.output();
  8. context.close();
  9. }
  10. }

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,216人围观)

还没有评论,来说两句吧...

相关阅读