[坑]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]。

目录
相关文章
|
4月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
220 1
|
4月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
4月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
485 1
|
5月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
1631 1
|
5月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
668 64
|
6月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
514 0
|
6月前
|
人工智能 安全 Java
掌握Java反射:在项目中高效应用反射机制
Java反射是一种强大功能,允许程序在运行时动态获取类信息、创建对象、调用方法和访问字段,提升程序灵活性。它在框架开发、动态代理、注解处理等场景中广泛应用,如Spring和Hibernate。但反射也存在性能开销、安全风险和代码复杂性,应谨慎使用。
148 0
|
NoSQL Java Redis
Java程序中如何正确的释放资源(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day2)
Java程序中如何正确的释放资源(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day2)
197 0
Java程序中如何正确的释放资源(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day2)
|
Java 程序员 API
Java程序中如何正确的释放资源
在Java开发中,程序员经常会遇到各种资源的释放问题。比如最常见的I/O操作,我们往往会通过调用API提供的close方法来关闭流,释放资源。但是追求极致的程序员会发现,这种方式存在不少问题,比如忘记关闭流、代码不美观、异常不好处理等等。
844 0
Java程序中如何正确的释放资源
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
230 1