Java Resource路径整理总结

发布时间 - 2026-01-11 00:12:48    点击率:

  Java Resource路径

首先一点很重要,Java中不存在标准的相对路径,各种相对路径取资源的方式都是基于某种规则转化为绝对路劲

然后一点也很重要,绝对不要直接使用绝对路径,否则死得很难看

基于以上两点,总结Resource路径问题无非归结为一点:找基点,也就是在某种环境下(web、j2ee或jar包等)通过合适的方式找到一个稳定的基点,然后通过这个基点找到你要的resource

Java中的基点有哪些呢?大致总结一下有以下几种:

1)classpath

如果你要找的资源在classpath下,那么通过classpath这个基点是比较合适的,而取得这个基点方式主要是通过ClassLoader来,具体方法就是 ClassLoader.getResource(String name),而取得ClassLoader的方式很多,比如:

  1. Thread.currentThread().getContextClassLoader()
  2. clazz.getClassLoader()
  3. ClassLoader. getSystemClassLoader()

ClassLoader找resource的实现原理就是先递归在parent classLoader中从所在classpath里加载resource(最终如何加载JDK未开源),如果所有层级的classLoader都未找到,则调用findResource方法来找,而这个方法是暴露给自制classLoader来现实的,因此给了在classpath之外加载resource的机会。

2) 当前用户目录

就是相对于System.getProperty("user.dir" )返回的路径, 对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范! 然而, 默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名,如new File("xxx"),就是在 System.getProperty("user.dir" )路径下找xxx文件。因此,通过这种方式来定位文件可能会出现移植问题。

3) Web应用程序的根目录

在Web应用程序中,我们一般通过ServletContext.getRealPath("/" )方法得到Web应用程序的根目录的绝对路径。

掌握了上面几个基点,就能很轻松得定位你要找的resource,只不过要清晰地认识到不要只图一时快活,而不管将来移植的死活,要确保能任何环境下(j2se or web,windows or Linux)不出问题。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # Resource路径  # Resource路径小结  # Resource  # 应用程序  # 加载  # 递归  # 都是  # 这是  # 你要找  # 几个  # 是在  # 就能  # 也就  # 不出  # 你要  # 给了  # 希望能  # 很重要  # 几种  # 认识到  # 谢谢大家  # 相对于  # 转化为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何发送系统通知?(Notification渠道示例)  *服务器网站为何频现安全漏洞?  历史网站制作软件,华为如何找回被删除的网站?  如何快速生成橙子建站落地页链接?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何处理表单验证?(Requests代码示例)  Laravel如何实现数据库事务?(DB Facade示例)  如何撰写建站申请书?关键要点有哪些?  如何用腾讯建站主机快速创建免费网站?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel如何配置和使用缓存?(Redis代码示例)  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何在企业微信快速生成手机电脑官网?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  如何在云指建站中生成FTP站点?  如何在万网ECS上快速搭建专属网站?  如何自定义建站之星模板颜色并下载新样式?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何正确下载安装西数主机建站助手?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何在IIS中新建站点并解决端口绑定冲突?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  再谈Python中的字符串与字符编码(推荐)  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  打造顶配客厅影院,这份100寸电视推荐名单请查收  如何解决hover在ie6中的兼容性问题  如何获取免费开源的自助建站系统源码?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Laravel如何实现事件和监听器?(Event & Listener实战)  香港服务器选型指南:免备案配置与高效建站方案解析  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何生成腾讯云建站专用兑换码?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  如何彻底删除建站之星生成的Banner?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】