Java命令行参数
Java命令行参数
1. Java系统变量 (VM Options)
java -jar -Dserver.port=8000 xxx.jar --spring.profiles.active=prd
说明 -Dproperty=value 设置系统属性; 相当于在IDEA中的`VM Options`,在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用`System.getProperty(“propertyName”)`得到`value`的值。如果`value`中有空格,则需要用双引号将该值括起来,如`-Dname=”space string”`。该参数通常用于设置系统级全局变量值,如配置文件路径,应为该属性在程序中任何地方都可访问。
2. Program arguments (springboot参数)
java -jar xxx.jar --server.port=8000
说明 Program arguments 为我们传入`main`方法的字符串数组`args[]`,它通常以`--`开头,如`--spring.profiles.active=dev3`;等价于`-Dspring.profiles.active=dev3`如果同时存在,以`Program arguments`配置优先;
IDEA Program arguments:
--spring.profile.active=dev --logging.level.root=DEBUG
3. 环境变量 Environment variables
ZOOKEEPER SERVER=192.168.8.168
4. 优先级
Program arguments (--priority-program-agrs) > VM options (-D)priority=vm-options) > Environment variable (priority=environment-variablees > 所有application.yml application-prd.yml
如下方式,启动端口为8081,即命令行参数 > 系统属性(VM属性)
Environment 类的使用
@Slf4j @SpringBootTest class WorkerProcessApplicationTests { @Resource private Environment environment; @DisplayName("测试读取配置信息") @Test public void readProperties(){ String appName = environment.getProperty("powerjob.worker.app-name"); System.out.println("--->"+appName); //根据激活的配置文件返回 String port = environment.getProperty("powerjob.worker.akka-port"); System.out.println("--->"+port); // 获取到server.port的值为-1,原因:测试类启动springboot程序时并没有以配置端口启动服务 String serPort = environment.getProperty("server.port"); System.out.println("--->"+serPort); String token = environment.getProperty("desaysv.extend.token"); System.out.println("--->"+token); } }
Runtime的使用
int cores = Runtime.getRuntime().availableProcessors(); //向 Java 虚拟机返回可用处理器的数目
System的使用
// windows下输出当前用户的文件路径: C:\Users\zhangsan , liunx下输出 的是斜杠路径/ String oms = System.getProperty("user.home", "oms");
// 使用场景:如指定临时下载文件路径(一般需要即使删除,避免临时文件太多造成磁盘压力)
java.io.File tempfile = sftpUtils.download(attachmentVo.getUrl(),System.getProperty("user.home", "userservice") + "/temp");
finally {
if(Objects.nonNull(tempfile)){
// 删除临时文件
FileUtil.del(tempfile);
log.info("delete temp file...");
}
}
````
边系鞋带边思考人生.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下