this.getClass().getResource(String) 路径问题
this.getClass().getResource(String) 路径问题 这里的默认当前路径是该类所在目录; this.getClass() 说明了一切!!
找到类,就找文件;很显然和类同一目录下
如果是在静态方法里,可以使用 类名.Class.getResource()
this.getClass().getClassLoader().getResource(String) 这里的路径就是项目的根目录 src/main下的 或者编译好的classes 下的;getClassLoader()说明了一切 ! !
找到类,还得找到类的加载器,再找文件;很显然再根目录下
File f=new File(String);//路径问题和上述有点区别 这里默认当前路径是该工程下的第一层 与平时所说的src 在同一层
其实具体所指示的路径可能由于开发工具的相关配置而引起不同,此时可以打印一下f的路径看看
其实很简单:
/images/j.jpg
/a.txt 有斜杠 表示从 项目 根目录下找
images/j.jpg
a.txt 无斜杠表示从当前 执行 文件夹下寻找 难点在于哪里是根目录,哪里是当前文件夹下。。。。。。是编译好的文件噢!!!!! 不一定 是当前编写的代码所在的文件。为什么说不一定呢? 对于maven项目,根目录其实是在target 文件夹下的classes 或 test-classes 对于maven的web项目其目录结构应如下
maven
--src
--main
--java (在运行时,其内容会被编译到target的classes下,紧适合放java代码)
--包A
--包B
--resources (在运行时,下面内容会被拷贝的target下,因此放一些资源文件)
--文件夹C
--图片X
--图片J
--webapp
--test --target (运行或编译时候自动生成)
--classes
--包A
--包B
--问价夹C
--图片X
--图片J
--test-classes 如上图:根目录就是指classes/ 或test-classes/ test与main下面的文件夹结构类似,都一般包含java、resource等 假如我在main/resources 下面的文件价夹下放置 图片.jpg;通过test/java/中的类能否使用呢? 答案是可以的: 本人测试结果如下: 首次编译执行test: main/resources与 test/resources 内都有要使用的文件,则使用拷贝到test-classes/下的文件
main/resources有 test/resources 内没有,则使用拷贝到classes/下的文件 非初次编译运行时: 假如我在第二次运行前删除了test-classes/下的文件 则他会去寻找classes/下的文件
若都删除则会报错,找不到 文件同步机制:src ----> target 单向同步
this.getClass().getResource(String) 路径问题的更多相关文章
- 关于obj.class.getResource()和obj.getClass().getClassLoader().getResource()的路径问题
感谢原文作者:yejg1212 原文链接:https://www.cnblogs.com/yejg1212/p/3270152.html 注:格式内容与原文有轻微不同. Java中取资源时,经常用到C ...
- JAVA获取当前文件路径this.getClass().getResource方法详细讲解
public class Test { public void run() { // TODO Auto-generated method stub System.out.println(" ...
- 关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- 【转】关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- getResource(String name)用法及源码分析
Project获取资源需要一个启点,加载资源的动作是由ClassLoader来完成的.Class对象和当前线程对象可以找到当前加载资源的ClassLoader,通过ClassLoader的getRes ...
- java: 关于从jar中读取资源遇到的问题getClass().getResource(...)
在Java的程序发布中,很多人会选择采用二进制的jar的格式进行发布,怎么样读取Jar里面的资源呢?主要是采用ClassLoader的下面几个方法来实现:public URL getResource( ...
- (转)关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. 1 Class.getResource(St ...
- 关于Class.getResource和ClassLoader.getResource的路径问题(转)
参考博客:http://www.cnblogs.com/yejg1212/p/3270152.html Class.getResource(String path) 当path以/开头,如/a/b/c ...
- this.getClass().getResource()示例详解
public class ResourceTest extends TimerTask{ @Override public void run() { System.out.prin ...
随机推荐
- cmake的下载和安装
背景: 最近迷上了 vscode 编辑器, 快速便捷,而且插件丰富,使用起来很爽.既然这样,本身游戏也是用 mingw 加 cygwin 开发的, 可以配置一下,开搞. 实操: 1.登陆cmake官网 ...
- [JAVA]字符串常量池String pool
字符串常量池(String Pool)保存着所有字符串字面量(literal strings),这些字面量在编译时期就确定.不仅如此,还可以使用 String 的 intern() 方法在运行过程中将 ...
- JVM 专题一:虚拟机(一)
1. 虚拟机 1.1 什么是虚拟机? 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 所谓虚拟机,就是一台虚拟的计算机.它是 ...
- 爬虫04 /asyncio、selenium规避检测、动作链、无头浏览器
爬虫04 /asyncio.selenium规避检测.动作链.无头浏览器 目录 爬虫04 /asyncio.selenium规避检测.动作链.无头浏览器 1. 协程asyncio 2. aiohttp ...
- Configurate vim tool
vim tool is a commom editor, for the sake of improving effeicient, it is necessary to configurate vi ...
- vue 写h5页面-摇一摇
依赖的第三方的插件 shake.js github地址: https://github.com/alexgibson/shake.js 提供一个摇一摇音效下载地址:http://aspx.sc.chi ...
- bzoj3767A+B Problem加强版
bzoj3767A+B Problem加强版 题意: 求两个数的和,每个数绝对值≤10^(10^7). 题解: 又用Python水过了…… 代码: a=raw_input() b=a.split() ...
- 使用pycharm、跳板机连接内网服务器
使用pycharm.跳板机连接内网服务器 接手实验室服务器后,大部分同学在GPU集群上跑程序都是直接在ssh界面上跑,这里想着通过pycharm通过跳板机来连接服务器. 总体就是实验室服务器仅限内网访 ...
- HTML学习分享二
一 . 常用快捷键 ctrl + s : 保存 ctrl + x.ctrl + c.ctrl + v : 剪切.复制.粘贴 ctrl + a : 全选 sh ...
- IDEA JRebel热部署( IDEA版本是2020.1.2)
1.安装JRebel插件 在IDEA->Settings->plugins先安装JRebel插件: 2.下载工具 安装好JRebel后,找到lanyus大神文章中写的git地址:http: ...