今天小编给大家分享一下Java项目中classpath类路径如何获取的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一、简介
classpath
类路径在 Spring Boot 中既指程序在打包前的/java/
目录加上/resource
目录,也指程序在打包后生成的/classes/
目录。两者实际上指的是同一个目录,里面包含的文件内容一模一样。
二、获取classpath路径
以下两种方式均可,但是并不能用于生产环境,因为当我们把程序打成jar
包时,由于jar
包本质是压缩文件,无法被直接打包,所以生成的路径中会含有感叹号!
导致路径定位错误,例如:jar!/BOOT-INF/classes!/application.yml (No such file or directory)
// 方式一:String path2 = ClassUtils.getDefaultClassLoader().getResource("").getPath();// 方式二:String path3 = ResourceUtils.getURL("classpath:").getPath();
此时,如果我们想要读取jar
包内的文件,可以采取第 3 种方式不读取路径、直接读取文件流:
// 方式 三InputStream input = ClassUtils .getDefaultClassLoader() .getResourceAsStream("application.yml");Reader reader = new InputStreamReader(input, "UTF-8");
三、获取项目路径
上面介绍了如何获取classpath
路径之后,其实有时候我们会发现自己只想获取当前程序所在路径或jar
包所在路径,那么此时又应该如何获取呢?
// 方式一:File file = new File(".");File path2 = file.getAbsoluteFile();// 方式二:String path3 = System.getProperty("user.dir");
两者方式并无优劣之分,具体使用哪种取决于你的爱好~
classpath 和 classpath* 区别:
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
以上就是“Java项目中classpath类路径如何获取”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。