getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析

本文探讨了在Spring Boot应用中,通过`getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()`来获取类路径的方法。分析了在不同启动方式(java -jar, mvn spring-boot:run)和打包类型(jar包,作为第三方依赖)下,该代码返回路径的不同,并解释了这些路径的含义。" 102646218,5722146,SpringCloud Ribbon实战:自定义RandomRule实现均衡策略,"['微服务', 'SpringCloud Ribbon', '负载均衡', '策略算法']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当通过java -jar或者命令行mvn spring-boot:run的方式启动springboot项目时,会引导执行如下代码:

public static void main(String[] args) throws Exception {
	new JarLauncher().launch(args);
}

调用JarLauncher不带参数的构造方法创建JarLauncher对象,根据Java的继承特性会调用父类中的createArchive方法,官方代码实现如下:

protected final Archive createArchive() throws Exception {
	ProtectionDomain protectionDomain = getClass().getProtectionDomain();
	CodeSource codeSource = protectionDomain.getCodeSource();
	URI location = (codeSource != null) ? codeSource.getLocation().toURI() : null;
	String path = (location != null) ? location.getSchemeSpecificPart() : null;
	if (path == null) {
		throw new IllegalStateException("Unable to determine code source archive");
	}
	File root = new File(path);
	if (!root.exists()) {
		throw new IllegalStateException("Unable to determine code source archive from 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值