idea為java程序添加啟動參數(shù)的問題解析(program?arguments,vm?arguments,Environment?variable)并在程序中獲取使用
一、問題描述
1. 開發(fā)環(huán)境
- idea2019
- jdk1.8
- win10
在實際的項目開發(fā)中我們經(jīng)常需要為java程序添加一些啟動參數(shù)(又叫java啟動命令),比如虛擬機(jī)參數(shù),環(huán)境變量等等。
2. Java啟動命令可選項(options)
java啟動命令可選項顧名思義就是java啟動參數(shù),當(dāng)你不加這個參數(shù)時 jvm會選擇默認(rèn)的配置進(jìn)行啟動。Java啟動命令可選項(options)大致可分為標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)兩種,非標(biāo)準(zhǔn)的可選項不保證在所有平臺上都實現(xiàn),并且未來的版本中可能會被修改且不告知,總之就是不穩(wěn)定(Unstable)。不過有的非標(biāo)準(zhǔn)可選項還是非常有用的。
標(biāo)準(zhǔn)可選項(Standard options) 使用最多的就是 -Dkey=value 設(shè)定系統(tǒng)屬性值,比如編碼 -Dfile.encoding=UTF-8 。可以設(shè)定一些系統(tǒng)使用的屬性,也可以用來向程序傳遞一些自定義的參數(shù)。 可以通過System.getProperty(“keyname”) 來獲取屬性。
非標(biāo)準(zhǔn)可選項(Nonstandard Options)主要是設(shè)置一些虛擬機(jī)的參數(shù), 非標(biāo)準(zhǔn)的可選項一般都是以 -X 開始,同時他還包含一個不穩(wěn)定的不穩(wěn)定(Unstable)的選項 不穩(wěn)定的選項一般都是以 -XX 開頭。
具體的java啟動命令可參考:Java啟動命令大觀
二、解決方案
idea的添加啟動參數(shù)的過程如下:
1. 打開需要添加啟動參數(shù)的對話框
2. 找到你需要的添加啟動的參數(shù)的如果沒有需要自己新建
注意
VM options 需要以 -D 或 -X 或 -XX 開頭,每個參數(shù)最好使用空格隔開。
program arguments 每個參數(shù)需要以空格隔開。否則將會被識別成一個參數(shù),自己用的時候還得手動處理。
Environment variable 沒有前綴,優(yōu)先級低于 VM options ,即如果VM options 有一個變量和 Environment variable中的變量的key相同,則以VM options 中為準(zhǔn),(如果用命令行啟動,這個參數(shù)需要在運行java類以前使用 set JAVA_HOME=D:\jdk1.8.0_05 這種方式進(jìn)行臨時修改,這種方式只在當(dāng)前cmd窗口有效,點擊看詳情 設(shè)置臨時的java環(huán)境變量)。
java提供了System類的靜態(tài)方法getenv()和getProperty()用于返回系統(tǒng)相關(guān)的變量與屬性,**getenv()**方法返回的變量大多于系統(tǒng)相關(guān),
- getProperty() 方法返回的變量大多與java程序有關(guān)。
- System.getenv() 方法是獲取指定的環(huán)境變量的值。
- System.getenv(String name) 接收參數(shù)為任意字符串,當(dāng)存在指定環(huán)境變量時即返回環(huán)境變量的值,否則返回null。
- System.getProperty() 是獲取系統(tǒng)的相關(guān)屬性,包括文件編碼、操作系統(tǒng)名稱、區(qū)域、用戶名等,此屬性一般由jvm自動獲取,不能設(shè)置。
System.getProperty(String key) 接收參數(shù)為任意字符串,當(dāng)存在指定屬性時即返回屬性的值,否則返回null。具體應(yīng)用如下:
package com.ratel.mongo; import java.util.Map; import java.util.Properties; /** * @業(yè)務(wù)描述: * @package_name: com.ratel.mongo * @project_name: springboot-mongo * @author: ratelfu@qq.com * @create_time: 2020-08-30 10:11 * @copyright (c) ratelfu 版權(quán)所有 */ public class MyTest { //*program arguments 其實就是對應(yīng)的args參數(shù) public static void main(String[] args) { //打印傳進(jìn)來的 program arguments for (String arg : args) { System.out.println(arg); } //獲取java相關(guān)的環(huán)境變量 String myVMarg = System.getProperty("MyVMarg"); System.out.println("System.getProperty(\"MyVMarg\")----->"+myVMarg); Properties properties = System.getProperties(); System.out.println("System.getProperties():=======>"+properties); //獲取運行jvm的平臺相關(guān)環(huán)境變量 Map<String, String> getenv = System.getenv(); System.out.println("System.getenv():----->"+getenv); String myVMarg1 = System.getenv("MyVMarg"); System.out.println("System.getenv(\"MyVMarg\")=======>"+myVMarg1); } }
運行結(jié)果如下圖:
三、參考鏈接
到此這篇關(guān)于idea為java程序添加啟動參數(shù)(program arguments,vm arguments,Environment variable),并在程序中獲取使用的文章就介紹到這了,更多相關(guān)idea為java程序添加啟動參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 阿里云k8s集群使用ingress配置時間超時的參數(shù)
- idea快捷鍵生成getter和setter,有構(gòu)造參數(shù),無構(gòu)造參數(shù),重寫toString方式
- Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式
- IntelliJ?IDEA設(shè)置JVM運行參數(shù)的圖文介紹
- IDEA中Debug調(diào)試VUE前端項目調(diào)試JS只需兩步
- 在IDEA中Debug調(diào)試VUE項目的詳細(xì)步驟
- idea 無法debug調(diào)試的解決方案
- Intellij IDEA Debug調(diào)試技巧(小結(jié))
- 你不知道的 IDEA Debug調(diào)試小技巧(小結(jié))
- k8s部署的java服務(wù)添加idea調(diào)試參數(shù)的方法
相關(guān)文章
Java使用默認(rèn)瀏覽器打開指定URL的方法(二種方法)
Java使用默認(rèn)瀏覽器打開指定URL。2013-10-10郵件收發(fā)原理你了解嗎? 郵件發(fā)送基本過程與概念詳解(一)
你真的了解郵件收發(fā)原理嗎?這篇文章主要為大家詳細(xì)介紹了郵件發(fā)送基本過程與概念,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10利用Java Apache POI 生成Word文檔示例代碼
本篇文章主要介紹了利用Java Apache POI 生成Word文檔示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Java用itextpdf導(dǎo)出PDF方法(通俗易懂)
因為項目需要導(dǎo)出PDF文件,所以去找了一下能夠生成PDF的java工具,這篇文章主要給大家介紹了關(guān)于Java用itextpdf導(dǎo)出PDF的相關(guān)資料,文中介紹的方法通俗易懂,需要的朋友可以參考下2023-07-07SpringCloud Feign服務(wù)調(diào)用請求方式總結(jié)
這篇文章主要介紹了SpringCloud Feign服務(wù)調(diào)用方式總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04