当前位置: 首页 > 知识库问答 >
问题:

访问子项目Spring Boot中的资源

鲁彬炳
2023-03-14

我有1个根项目和3个模块(api,模型,存储)在其中。以下是项目结构:

**root**
--**api**
----src
------main
--------java
----------Application.java
--------resources
----------data.csv
----build.gradle
--**model**
----src
----build.gradle
--**storage**
----src
----build.gradle
build.gradle
settings.gradle

在我的application.java中,我试图从参考资料中读取CSV文件:

    @SpringBootApplication
    @EnableAutoConfiguration
    @EnableJpaRepositories
    @EnableSolrRepositories
    public class MyApp{

        public static void main(String[] args) throws IOException {
            SpringApplication.run(MatMatchApp.class);
            ClassPathResource res = new ClassPathResource("classpath:data.csv");
            String path =res.getPath();
            File csv = new File(path);
            InputStream stream = new FileInputStream(csv);
        }
    }
Caused by: java.io.FileNotFoundException: data.csv (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_101]
    at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_101]
    at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_101]
File file = new File(getClass().getResource("data.csv").getFile());

解决了此代码工作良好:

InputStream is = new ClassPathResource("/example.csv").getInputStream();

要了解更多详细信息,请检查以下答案:作为jar运行时未找到classpath资源

共有1个答案

林博厚
2023-03-14

测试了一个普通项目,您可以在这里看到spring-boot-resource-access

您可能会错过文件前面的/

ClassPathResource res = new ClassPathResource("classpath:/data.csv");

File file = new File(getClass().getResource("/data.csv").getFile());

测试应用程序时,您必须从实例类中找到类路径,例如ConfigurableApplicationContext

public static void main(String[] args) throws URISyntaxException {
    ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class);
    File csv = new File(context.getClass().getResource("/application.properties").toURI());
    System.out.println(csv.getAbsolutePath());
    System.out.println(String.format("does file exists? %s", csv.exists()));
}
 类似资料:
  • 我在eclipse中初始化了一个SpringBoot Rest,并使其成为一个动态Web项目。遵循了三轮胎原则,并在控制器类中声明了endpointURL。项目部署良好,但一旦我尝试访问返回404错误的endpoint。请参阅下面的示例。二手编译器-Maven和服务器-apache tomcat 9.0 主类.java } 示例控制器类

  • 我必须通过 JAR 项目提供静态.js文件。为此,我创建了一个 JAR(使用 MAVEN),如下所示: 现在,我将此 JAR 添加到我的父级Spring启动项目中,并在其中一个 中添加了 这给了我一个404错误。 我的结论是:要么启动项目没有将JAR中的文件夹合并到它自己的中,要么我没有正确地访问该文件。 这些问题没有帮助(无法更改<code>WebMvcConfigurerAdapter</co

  • 我正在从主类访问资源文件夹中的文件 我收到了这个错误: 我甚至打开了jar文件,remoteUnitsIdsInOldServer.txt文件就在那里,在类内部

  • 本文向大家介绍详解Springboot+React项目跨域访问问题,包括了详解Springboot+React项目跨域访问问题的使用技巧和注意事项,需要的朋友参考一下 一、开发环境 框架:springboot 1.5.10.RELEASE 开发工具:IDEA JDK:1.8 前端框架:React 15.6.1 浏览器:Chrome浏览器 二、跨域问题 本地使用ajax访问localhost:808

  • 在尝试运行我的第一个HelloWorld应用程序时,我发现了以下异常: org.springframework.beans.factory.beanDefinitionStoreException:未能读取候选组件类嵌套异常为java.lang.IllegalStateException:由于找不到org/springframework/dao/dataAccessException,无法计算or

  • 为了提出这个问题,我有一个简单的子项目定义为: 我真的希望能够在一个单独的子项目中引用完整的输出jar名称。 比如: 我可以在这里的文档中看到JAR任务具有archiveName属性:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar