最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java程序命令行參數(shù)用法總結

 更新時間:2021年09月23日 08:48:42   作者:bladestone  
這篇文章主要介紹了Java程序命令行參數(shù)用法總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言: 在命令行中輸入可以輸入各類參數(shù),本文將針對這些參數(shù)做一個小結。

基于命令行輸入?yún)?shù)

測試程序如下:

import java.util.Arrays;
public class Main {
 public static void main(String[] args) {
   System.out.println("System Property, abc:" + System.getenv("feature.flag") + "," + System.getProperty("feature"));
   System.out.println("args:" + Arrays.toString(args));
 }
}

基于命令行的輸入:

java -Dfeature=module1 -Xms128M -Xmx256M org.spb.data.Main first second third

輸出為:

System Property, abc:null,module1

args:[first, second, third]

從上述示例中可知 -Dfeature=module1,設置了系統(tǒng)屬性信息,被正確地解析出來。系統(tǒng)屬性的設置位于Java程序之前。

first second third作為Java程序的args參數(shù),需要放在程序之后才可以正確被解析。

-Xms128 -Xmx256M: 為設置JVM的參數(shù),這里設置了其對內(nèi)存的大小。

如果是Spring Boot應用的話,則可以在命令行設置:

– server.port=9091

通過兩個‘- - '作為命令行參數(shù)的前綴。

基于Run Configuration界面設置Java程序的入口參數(shù):

設置環(huán)境變量:

程序運行的結果信息:

在這里插入圖片描述

從運行結果中可知: 環(huán)境變量被正確設置讀取,但是系統(tǒng)屬性卻未正確設置。

基于命令行輸入系統(tǒng)屬性

java -Dfeature=module1 org.spb.data.Main

-D 表示其為系統(tǒng)屬性

JVM參數(shù)設置

java -Xms128M -Xmx256M org.spb.data.Main

JVM參數(shù)是設置JVM的設置,其遵守JVM設置的參數(shù)類型。

環(huán)境變量 vs 系統(tǒng)屬性

當程序中需要使用與操作系統(tǒng)相關的變量(例如:文件分隔符、換行符)時,Java提供了System類的靜態(tài)方法getenv()和getProperty()用于返回系統(tǒng)相關的變量與屬性,getenv方法返回的變量大多于系統(tǒng)相關,getProperty方法返回的變量大多與java程序有關。

系統(tǒng)屬性和環(huán)境變量都是名稱與值之間的映射。兩種機制都能用來將用戶定義的信息傳遞給 Java進程。環(huán)境變量產(chǎn)生更多的全局效應,因為它們不僅對Java子進程可見,而且對于定義它們的進程的所有子進程都是可見的。在不同的操作系統(tǒng)上,它們的語義有細微的差別,比如,不區(qū)分大小寫。因此環(huán)境變量更可能有意料不到的副作用。程序中盡可能使用系統(tǒng)屬性。環(huán)境變量應該在需要全局效應的時候使用,或者在外部系統(tǒng)接口要求使用環(huán)境變量時使用(比如 PATH)

從上述示例可知,系統(tǒng)屬性由于其與程序緊密相關,則可以基于命令行進行設置。但是,環(huán)境變量則無法通過程序進行設置,需要基于IDE和環(huán)境變量進行設置。

Java命令行的幫助信息:

圖中標示出來的就是系統(tǒng)屬性信息。

基于Maven命令運行Spring Boot應用

程序代碼如下:

@Slf4j
@SpringBootApplication
public class AppRunnerApplication {
    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(AppRunnerApplication.class, args);
        //Thread.currentThread().join();
        log.info("args:{}", Arrays.toString(args));
        log.info("feature:" + System.getProperty("feature"));
        log.info("feature.flag:" + System.getenv("feature.flag"));
    }
}

mvn spring-boot:run -Dmaven.test.skip=true -Pdev -Dspring-boot.run.arguments=“first seond third” -Dspring-boot.run.jvmArguments="-Dfeature=module11"

-Dfeature=module11設置系統(tǒng)屬性信息

arguments: 設置Java 程序main的入口參數(shù)

對于環(huán)境變量,則需要設置pom.xml文件中的plugin配置項:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <systemPropertyVariables>
                        <feature>moduleXXX</feature>
                    </systemPropertyVariables>
                    <environmentVariables>
                        <feature.flag>true</feature.flag>
                    </environmentVariables>
                </configuration>
            </plugin>
        </plugins>
    </build>

運行結果為:

2019-11-11 23:08:22.764 INFO 18717 --- [ restartedMain] o.s.d.apprunner.cmdline.AppLineRunner1 : App LineRunner1:first seond third

2019-11-11 23:08:22.765 INFO 18717 --- [ restartedMain] o.s.d.apprunner.cmdline.AppLineRunner2 : App LineRunner2:[first seond third]

2019-11-11 23:08:22.766 INFO 18717 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : args:[first seond third]

2019-11-11 23:08:22.766 INFO 18717 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : feature:module11

2019-11-11 23:08:22.766 INFO 18717 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : feature.flag:true

如果在命令行不進行jvmArguments的參數(shù)設置:

mvn spring-boot:run -Dmaven.test.skip=true -Pdev -Dspring-boot.run.arguments=“first seond third”

輸出結果信息如下:

2019-11-11 23:11:55.399 INFO 18757 --- [ restartedMain] o.s.d.apprunner.cmdline.AppLineRunner2 : App LineRunner2:[first seond third]

2019-11-11 23:11:55.400 INFO 18757 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : args:[first seond third]

2019-11-11 23:11:55.400 INFO 18757 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : feature:moduleXXX

2019-11-11 23:11:55.400 INFO 18757 --- [ restartedMain] o.s.data.apprunner.AppRunnerApplication : feature.flag:true

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

辽阳市| 大新县| 朝阳区| 临颍县| 双流县| 彭山县| 石门县| 山东省| 庄河市| 酉阳| 镇巴县| 元阳县| 邢台市| 西宁市| 曲靖市| 新郑市| 临清市| 宣化县| 云龙县| 铁岭县| 许昌市| 辛集市| 会同县| 依兰县| 通江县| 大城县| 洛浦县| 平江县| 若羌县| 蛟河市| 翁源县| 甘泉县| 浙江省| 竹溪县| 彭泽县| 四川省| 祁阳县| 红安县| 菏泽市| 双辽市| 汾西县|