20230223更新:Spring Boot中的classpath路径获取及相关介绍

2023 年 02 月 23 日 10 时 59 分 56 分进行了更新,更新者是 ThinkStu。
类路径指的是编译之后的 target 文件夹下的 WEB-INF/class 文件夹。下面这篇文章主要给大家介绍了关于 Java 项目中类路径是什么的相关资料,需要的朋友可以参考下。
目录
Spring Boot
一、简介
Spring Boot 中的 classpath 类路径,一方面指的是程序在打包前的/java/目录加上/resource 目录;另一方面指的是程序在打包后生成的/classes/目录。这两者实际上指的是同一个目录,且其中包含的文件内容完全相同。
二、获取classpath路径
以下两种方式存在问题,不能用于生产环境。因为把程序打成 jar 包后,由于 jar 包本质是压缩文件,不能直接被打包,所以生成的路径中会包含感叹号!,从而导致路径定位错误,例如:jar!/BOOT-INF/classes!/application.yml(无此文件或目录)。
// 方式一:
获取默认类加载器所获取资源的路径,这个路径被存储在字符串 path1 中,其具体路径为 ClassUtils.getDefaultClassLoader().getResource("").getPath();
// 方式二:
获取类路径的 URL 为 ResourceUtils.getURL("classpath:"),然后获取该 URL 的路径为 path2 。
此时,若我们希望读取 jar 包内的文件,那么可以选用第 3 种方式,即不读取路径,直接读取文件流。
// 方式 三
InputStream input 等于 ClassUtils 。
.getDefaultClassLoader()
获取资源流为“application.yml”。
创建一个名为 reader 的读取器,它是通过将输入流 input 与编码“UTF-8”进行关联而创建的。
三、获取项目路径
上面介绍了获取 classpath 路径的方法之后,有时我们会有这样的需求,即只想获取当前程序所在的路径或者 jar 包所在的路径。那么,在这种情况下,又该如何去获取呢?
// 方式一:
File file = new File(".");
文件路径 1 等于文件获取的绝对文件路径。
// 方式二:
系统属性“user.dir”所对应的路径为 String path2 。
两者方式并无优劣之分,具体使用哪种取决于你的爱好~
classpath 和 classpath* 区别:
classpath:只会到你的class路径中查找找文件;
classpath*包含的内容有:一是包含 class 路径;二是还包括在 jar 文件中的(class 路径)进行查找。
总结
这篇关于 Java 项目中 classpath 类路径是什么的文章到此就介绍完了。更多关于 classpath 类路径是什么的内容,可以搜索脚本之家以前的文章,或者继续浏览下面的相关文章。希望大家以后多多支持脚本之家!