一、怎么覆盖当前jar中的配置文件?
在*.jar目录下创建一个config文件夹,config文件夹当中创建application.yml文件
使用 -Xbootclasspath/p 命令,是在jar包加载路径之前读取config当中的配置文件
二、使用命令
## 配置文件路径 /config/applocation.yml
## : 分隔线 多个冒号表示多个文件路径
命令:
java -Xbootclasspath/p:/config/applocation.yml:/config/applocation-dev.yml -jar *.jar
三、-Xbootclasspath/p参数解读
java -Xbootclasspath/p:
是 Java 虚拟机(JVM)的一个非标准选项,用于在启动时修改或扩展 JVM 的引导类路径(bootstrap classpath)。这个选项允许你在 JVM 启动时将指定的 JAR 文件或目录添加到默认的引导类路径之前。
作用
- 扩展引导类路径:通过
-Xbootclasspath/p:
选项,你可以指定额外的路径(可以是 JAR 文件或目录),这些路径会被添加到 JVM 默认的引导类路径的前面。这意味着,当你使用该选项时,JVM 会优先加载你指定路径中的类和资源,然后再加载默认的引导类路径中的内容。 - 替换核心库:这种能力有时被用来替代或扩展 JDK 自带的核心库,例如替换某些内部实现或者为研究目的修改 JDK 内部行为。
语法
java -Xbootclasspath/p:<path> [other options] <main class>
其中 <path>
可以是一个或多个用分号(;)或冒号(:)分隔的路径,具体取决于操作系统(Windows 使用分号,Unix/Linux 使用冒号)。
示例
假设你有一个自定义的 rt.jar
文件,你想让它优先于 JDK 自带的 rt.jar
被加载,你可以这样做:
java -Xbootclasspath/p:/path/to/your/custom/rt.jar -version
这样,JVM 在启动时会首先查找 /path/to/your/custom/rt.jar
中的类文件,如果找不到,则会回退到默认的引导类路径中去寻找。
注意事项
- 不推荐频繁使用:修改引导类路径通常是为了特定的研究或开发目的,而不是日常应用开发。因为这可能会影响到 JVM 的稳定性和安全性。
- 风险:错误地使用这个选项可能会导致不可预见的问题,比如类加载冲突、安全漏洞等。
- 非标准选项:
-X
开头的选项是非标准的 JVM 选项,它们的行为可能在不同版本的 JVM 中有所不同,并且不受官方支持。