首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >maven项目中获取类路径和项目路径的写法示例

maven项目中获取类路径和项目路径的写法示例

作者头像
在水一方
发布2022-06-14 16:05:57
发布2022-06-14 16:05:57
3K0
举报
文章被收录于专栏:在水一方在水一方

springboot项目中当在类路径(resources目录)下如何获取类路径下某个文件

1 在Controller中获取类路径的写法:

代码语言:javascript
复制
        String fileName = "verifierTemplate.xlsx";
        String path = this.getClass().getResource("/").getPath()+fileName;

java.lang.Class类中的方法

代码语言:javascript
复制
 public java.net.URL getResource(String name) {
        name = resolveName(name);
        ClassLoader cl = getClassLoader0();
        if (cl==null) {
            // A system class.
            return ClassLoader.getSystemResource(name);
        }
        return cl.getResource(name);
    }

关于classpath

classpath,指的是编译后的class文件、xml、properties等配置文件所在的目录。比如,如果是maven项目,classpath为"项目名/target/classes",如果是普通项目,可能是”项目名/bin”,或者”项目名/build/classes”等等。

getResource是java.lang.Class的方法,也就是由字节码对象调getResource接受一个字符串参数,如果以"/"开头,就在classpath根目录下找(不会递归查找子目录),如果不以”/”开头,就在调用getResource的字节码对象所在目录下找(同样不会递归查找子目录)

测试

代码语言:javascript
复制
  System.out.println("路径一为:"+this.getClass().getResource("").getPath());
  System.out.println("路径二为:"+this.getClass().getResource("/").getPath());

说明

代码语言:javascript
复制
this.getClass().getClassLoader().getResource("").getPath()和this.getClass().getResource("/").getPath()得到的结果一样,均为:/D:/workspace/meas/target/classes/ 从源码中可以看到其实在getResource方法中封装了getClassLoader().getResource("")

项目启动后会自动在项目根目录下生成一个target,这里存放编译后的class文件

获取项目根路径

代码语言:javascript
复制
      File directory = new File("");// 参数为空
      String courseFile = directory.getCanonicalPath();
      System.out.println("项目路径为:"+courseFile);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于classpath
  • 测试
  • 说明
  • 获取项目根路径
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档