[坑]Idea Java 项目resources目录资源访问

简介: 最近写些小的 java 项目先用 resources 目录来存放一些资源文件,有些是正式环境的资源如 log4j 等配置,有些是junit测试环境,比如测试用的图片资源等。

最近写些小的 java 项目先用 resources 目录来存放一些资源文件,有些是正式环境的资源如 log4j 等配置,有些是junit测试环境,比如测试用的图片资源等。

如下以测试环境为例,进行说明。

[坑位说明]

正常情况下,本人默认会认为 resources 目录默认为资源目录,目录结构如下图:

img_a86008b4c00091eae5235685409d1993.png
项目目录结构

因此使用如下代码进行默认访问:

      File file = new File("1.png");
      ...

但这时候不能正常访问到该文件,因此只能另寻它法。

[坑位分析]

因此尝试了

      // 下面位置在 D:\workspace\project1\out\test\classes
      File file = new File(MainTest.class.getResource("/").getPath());
      // 下面位置在 D:\workspace\project1\out\test\classes
      File file1 = new File(MainTest.class.getClassLoader().getResource(".").getPath());
      // 下面位置为空
      File file2 = new File(MainTest.class.getClassLoader().getResource("/").getPath());
      // 下面位置在 D:\workspace\project1\out\test\resources\1.png
      File file3 = new File(MainTest.class.getClassLoader().getResource("1.png").getPath());

因此进入到 out\test目录下看看,发现 classes 和 resources 目录同时存在,这时候明白了,原来是资源文件和classes是分开存放的。
最后发现通过最后那种方式才能正确的取出文件。

[填坑步骤]

最后图之后简便,简单封装个方法吧。


    private static final File getResource(String file) {
        return new File(VisionEngine.class.getClassLoader().getResource(file).getPath());
    }

注意下,确认 test/resources 目录为 [test/resources] --右键--> [Mark Directory as] -->[Test Resources Root]。

目录
相关文章
|
19小时前
|
Java Maven
Maven 构建 Java 项目
使用Maven的`maven-archetype-quickstart`插件在C:\MVN下创建Java应用,命令包括`groupId`, `artifactId`, 和 `archetypeArtifactId`参数。生成的项目包含src/main/java和src/test/java目录,分别用于存放源代码和测试代码,还有src/main/resources用于资源文件。默认提供App.java主类和AppTest.java测试类。按照预设结构组织文件,Maven将自动管理构建过程。
|
1天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
8 0
|
3天前
|
Java
IDEA云行项目提示Error: java: OutOfMemoryError
IDEA云行项目提示Error: java: OutOfMemoryError
|
3天前
|
Java Spring
IDEA 创建 SpringCloud项目-多项目方式
IDEA 创建 SpringCloud项目-多项目方式
|
3天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
16 0
|
3天前
|
Java Maven
idea中maven项目pom文件Could not acquire lock(s)
idea中maven项目pom文件Could not acquire lock(s)
|
5天前
|
Java
解决IDEA打开java项目出现橙色j无法运行
解决IDEA打开java项目出现橙色j无法运行
9 0
|
5天前
|
运维 NoSQL Java
Serverless 应用引擎产品使用之在函数计算上部署Java服务并访问阿里云MongoDB如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
10 0
|
8天前
|
Java 应用服务中间件 Docker
【Docker】部署启动java项目
【Docker】部署启动java项目
15 2
|
8天前
|
搜索推荐 前端开发 Java
java医院绩效考核管理系统项目源码
系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
14 0