在java中的API里,有两种方式来使用classpath读取资源。

1. Class的getResource()

2. ClassLoader的getResource()

但是两者有一定区别,运行以下程序:

package zero.xml.config;

public class Main {

    public static void main(String[] args) {
new Main().testGetResource();
} public void testGetResource() { System.out.println(Main.class.getResource("/").getPath());
System.out.println(Main.class.getResource("/app.properties").getPath());
System.out.println(Main.class.getResource("").getPath());
System.out.println(Main.class.getResource("app.properties").getPath());
System.out.println("-------------------");
System.out.println(this.getClass().getResource("/").getPath());
System.out.println(this.getClass().getResource("/app.properties").getPath());
System.out.println(this.getClass().getResource("").getPath());
System.out.println(this.getClass().getResource("app.properties").getPath());
System.out.println("-------------------");
System.out.println(Main.class.getClassLoader().getResource("").getPath());
System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());
System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());
System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());
}
}

得到输出为:

/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config/
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
-------------------
/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config/
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
-------------------
/home/rain/git/spring-self-learn/bin/
/home/rain/git/spring-self-learn/bin/app.properties
/home/rain/git/spring-self-learn/bin/zero/xml/config
/home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties

也就是:

1. 如果想获得classpath,使用以下方法:

System.out.println(Main.class.getResource("/").getPath());

System.out.println(Main.class.getClassLoader().getResource("").getPath());

2. 如果想获得classpath下的文件,使用以下方法:

System.out.println(Main.class.getResource("/app.properties").getPath());

System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());

3. 如果想获得当前类(比如zero.xml.config.Main)的路径,使用以下方法:

System.out.println(Main.class.getResource("").getPath());

System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());

4. 如果想获得当前类路径下的文件,使用以下方法:

System.out.println(Main.class.getResource("app.properties").getPath());

System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());

注意,如果获取的文件或路径不存在,getResource()会返回null。比如,getClassLoader().getResource("/")就会返回null。

classpath获取--getResource()的更多相关文章

  1. classpath: VS classpath*:

    同名资源存在时,classpath: 只从第一个符合条件的classpath中加载资源,而classpath*: 会从所有的classpath中加载符合条件的资源 classpath*:需要遍历所有的 ...

  2. classpath和filepath

    ******************************** java中的相对路径和绝对路径 ******************************** 相对路径(其实就是编译后的路径) - ...

  3. classpath: 和classpath*:的区别

    classpath本质是jvm的根路径,jvm获取资源都是从该根路径下找的,注意这个根路径是个逻辑路径,并不是磁盘路径.比如两个jar包的路径是/a/a.jar和/b/b.jar,但是用classpa ...

  4. 通过SVN获取变更列表,得到对应的最新class

    通过本地SVN获得未提交的文件列表获取工程中最新的class的方式参考: 增量部署代码利用批处理命令按原始结构复制指定的文件 新写了一个增强版,根据已提交至SVN的代码loglist,获取最新的cla ...

  5. [Java拾遗三]JavaWeb基础之Servlet

    Servlet    1,servlet介绍        servlet是一项动态web资源开发技术.        运行在服务器端.        作用:处理业务逻辑,生成动态的内容,返回给浏览器 ...

  6. 上次遗留下来的XMLUtil的问题

    ·在上周留下了一个关于XMLUtil的问题,问题大概是这样的,需要通过读取一个XML文件,然后在内存中生成一个对应的javaBean.之前写的那个很是糟糕,照着一个XML去写了一个"Util ...

  7. 从源码角度深入分析log4j配置文件使用

    log4j在日常开发中经常使用,但有时候对 配置文件应该放到什么位置有疑惑.现在我们通过从代码的角度来看待这个问题, 看完后你也许会恍然大悟哦. 开始吧. Log4j的组成及架构: Log4j由三个重 ...

  8. 从源码来理解slf4j的绑定,以及logback对配置文件的加载

    项目中的日志系统使用的是slf4j + logback.slf4j作为一个简单日志门面,为各种loging APIs(像java.util.logging, logback, log4j)提供一个简单 ...

  9. spring资源访问接口和资源加载接口

    spring 资源访问接口 JDK提供的资源访问类,如java.net.URL.File等,不能很好地满足各种资源的访问需求,比如缺少从类路径或者Web容器的上下文中获取资源的操作类. 鉴于此,spr ...

随机推荐

  1. perl LWP::UserAgent获取源码与响应

    #!/usr/bin/perl -w use strict; use LWP::UserAgent; my $useragent = new LWP::UserAgent; my $url = 'ht ...

  2. 关于Application的onCreate以及Activity生命周期在源码里都是什么时候调用的

    在ActivityThread.handleLaunchActivity中 Activity a = performLaunchActivity(r, customIntent);这一方法最终回调目标 ...

  3. selenium自动化遇见Cannot find class in classpath问题

    今天遇见了Cannot find class in classpath的问题, org.testng.TestNGException: Cannot find class in classpath: ...

  4. debian安装后sudo命令不能用的解决方法

    注:转载他人 且试用过了,我的debian版本是debian8.2 64X debian安装完之后发现sudo命令不能用 找了半天发现是没有安装sudo 得了,进入root安包,炸开他,apt-get ...

  5. Weex-进阶笔记二

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #945200 } p.p2 { margin: 0.0p ...

  6. JavaScript中prompt()函数的用法。

    定义和用法 prompt()方法用于显示一个带有提示信息,并且用户可以输入的对话框. 语法 prompt(text,defaultText); 参数 描述 text 可选.要在对话框中显示的提示信息( ...

  7. Generating Faces with Deconvolution Networks

    用深度学习做人脸合成,website:https://zo7.github.io/blog/2016/09/25/generating-faces.html 受启发于 Learning to Gene ...

  8. 【定位:PDF文件定位关键字所在坐标和页码】

    iText简介: iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件 ...

  9. iOS开发下架在AppStore中销售的app

    1.登陆开发者账号 2.选择itunes connect 选择我的app 3.选择要下架的app 4.价格与销售范围 5.销售范围 6.点击存储 //如果想要重新在AppStore中进行销售只需要选择 ...

  10. 向网页中写入js和css

    向网页中写入js和css 本函数由前辈所写 loadFile: function (url, ftype) { var fileref; if (ftype == "js") { ...