1. -d 参数说明
通过 java -h
查看可知:
注意:
-D= : set a system property 设置系统属性。
如果value是一个包含空格的字符串,则必须将该字符串括在双引号中。
需要设置的是JVM参数而不是program参数
使用此参数的参数优先级最高,会覆盖项目中配置的此项
例如: springboot 项目中的 yaml 配置,可以通过此参数进行覆盖:-Dspring.datasource.password=123456
可以覆盖:
spring:
datasource:
password: 123456
2. 其他相关参数
3. idea 设置的位置
4. 系统属性和环境变量的区别
- 系统属性是指 JVM 中属性变量;环境变量是操作系统层面的变量
// 在java.lang.System这个类中提供了两个方法
getenv() // 获取操作系统中的环境变量
getProperties() // 获取 JVM 中的 系统属性
- 变量的操作
环境变量的操作有两种方法
- 通过windows界面设置 变量会一直存在
- DOS命令set设置(这些变量只是在当前DOS环境中存在一旦关闭则消失)
比如在脚本中添加 set parm=KKKK 则在当前操作界面就可以使用这个变量
在当前脚本执行的程序中可以通过getenv("parm")来获得其值
(注意一旦脚本运行完毕 或 DOS窗口关闭则这些的环境变量则也会取消 )
例子:
// 脚本内容
@echo off
set we=k
java zk
// zk.class的源码为
public class zk{
public static void main(String[] args){
String value = System.getenv("we");
System.out.print(value);
}
}
系统属性操作有两种方法
- 在程序中通过setProperty(key,name) getProperty(key)来设置
- 第二通过命令或脚本设置
重点讲解这个因为在一些脚本语言中大家经常会无意见到这些设置
却不理解是干什么用的,下面通过一个例子演示脚本中的使用
Java 系统变量主要是用于给main方法传参数
用法如下:
// 命令格式
java -D= xx name:系统属性键 value:值 xx:java命令要运行的类名如果要设置多个参数
java -D= -D= ..xx name
// 脚本内容
@echo off
java -Duu="HelloWorld" ParamTest
// 注意:java -Duu=HelloWord ParamTest 去掉双引号也可以 但值不可包含空格否则
// 会把空格之后作为类名 如 Hello World 则会把World作为类名来处理
// ParamTest.class源码为:
public class ParamTest{
public static void main(String[] args){
String param = System.getProperty("uu");
Systeem.out.print(param);
}
}
//当在脚本或命令行执行命令时 结果为“HelloWorld”