java setproperty_Java中通过System.setProperty()设置系统属

这篇博客探讨了Java的System.setProperty()方法用于设置系统属性,并通过示例展示了如何在程序中设置和获取这些属性。同时,文章深入解析了Tomcat源码中的Bootstrap部分,特别是如何查找和设置CATALINA_HOME属性,这是Tomcat在系统中的安装路径。通过读取用户目录、检查当前目录或回溯到父目录,确定Tomcat的安装位置并设置相应的系统属性。

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

设置指定键对值的系统属性

setProperty (String prop, String value);

参数:

prop - 系统属性的名称。

value - 系统属性的值。

返回:

系统属性以前的值,如果没有以前的值,则返回 null。

抛出:

SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置指定属性。

NullPointerException - 如果 key 或 value 为 null。

IllegalArgumentException - 如果 key 为空。

注:这里的system,系统指的是 JRE (runtime)system,不是指 OS。

//实例

System.setProperty("Property1", "abc");

System.setProperty("Property2","def");

//这样就把第一个参数设置成为系统的全局变量!可以在项目的任何一个地方 通过System.getProperty("变量");来获得,

//System.setProperty 相当于一个静态变量 ,存在内存里面!

public class SystemTest {

static {

setValue();

}

public static void setValue() {

System.setProperty("name", "张三");

System.setProperty("age", "28");

}

public static void main(String[] args) {

System.out.println(System.getProperty("name"));

System.out.println(System.getProperty("age"));

}

}

输出:

1348d2c7b86a544c4e2f0537f3944178.png

image.png

下面是在Tomcat源码中Bootstrap的代码块

static {

// Will always be non-null 将始终为非空

String userDir = System.getProperty("user.dir");

System.out.println("userDir 当前系统的用户目录====================>>>>>>> " + userDir);

// Home first 获取已经存在系统中的地址信息 catalina.home

String home = System.getProperty(Globals.CATALINA_HOME_PROP);

System.out.println("home first ======启动输出为null=======>>>>>>>>> " + home);

File homeFile = null;

if (home != null) {

File f = new File(home);

try {

homeFile = f.getCanonicalFile();

} catch (IOException ioe) {

homeFile = f.getAbsoluteFile();

}

}

if (homeFile == null) {

// First fall-back. See if current directory is a bin directory

// in a normal Tomcat install

File bootstrapJar = new File(userDir, "bootstrap.jar");

if (bootstrapJar.exists()) {

File f = new File(userDir, "..");

try {

homeFile = f.getCanonicalFile();

} catch (IOException ioe) {

homeFile = f.getAbsoluteFile();

}

}

}

if (homeFile == null) {

// Second fall-back. Use current directory

File f = new File(userDir);

try {

homeFile = f.getCanonicalFile();

} catch (IOException ioe) {

homeFile = f.getAbsoluteFile();

}

}

catalinaHomeFile = homeFile;

// 设置catalina.home键值中的系统属性,这里设置的是Tomcat在系统中的地址信息

System.setProperty(

Globals.CATALINA_HOME_PROP, catalinaHomeFile.getPath());

// Then base

String base = System.getProperty(Globals.CATALINA_BASE_PROP);

if (base == null) {

catalinaBaseFile = catalinaHomeFile;

} else {

File baseFile = new File(base);

try {

baseFile = baseFile.getCanonicalFile();

} catch (IOException ioe) {

baseFile = baseFile.getAbsoluteFile();

}

catalinaBaseFile = baseFile;

}

System.setProperty(

Globals.CATALINA_BASE_PROP, catalinaBaseFile.getPath());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值