欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

測(cè)試程序如下:

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,設(shè)置了系統(tǒng)屬性信息,被正確地解析出來。系統(tǒng)屬性的設(shè)置位于Java程序之前。

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

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

如果是Spring Boot應(yīng)用的話,則可以在命令行設(shè)置:

– server.port=9091

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

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

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

程序運(yùn)行的結(jié)果信息:

在這里插入圖片描述

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

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

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

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

JVM參數(shù)設(shè)置

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

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

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

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

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

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

Java命令行的幫助信息:

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

基于Maven命令運(yùn)行Spring Boot應(yīng)用

程序代碼如下:

@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設(shè)置系統(tǒng)屬性信息

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

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

<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>

運(yùn)行結(jié)果為:

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

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

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

輸出結(jié)果信息如下:

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

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

相關(guān)文章

  • Java程序設(shè)計(jì)之12個(gè)經(jīng)典樣例

    Java程序設(shè)計(jì)之12個(gè)經(jīng)典樣例

    這篇文章主要給大家分享關(guān)于Java程序設(shè)計(jì)11個(gè)經(jīng)典樣例,主要以舉例的形式詳細(xì)的講解了Java程序設(shè)計(jì)的各種方法,需要的朋友可以參考一下文章具體的內(nèi)容
    2021-10-10
  • Java使用Tinify實(shí)現(xiàn)圖片無損壓縮(4M無損壓縮到1M)的方法

    Java使用Tinify實(shí)現(xiàn)圖片無損壓縮(4M無損壓縮到1M)的方法

    在當(dāng)今的數(shù)字化時(shí)代,圖片已成為網(wǎng)站、應(yīng)用和社交媒體中不可或缺的元素,然而,大尺寸的圖片不僅會(huì)增加頁(yè)面或者客戶端加載時(shí)間,還會(huì)占用大量的存儲(chǔ)空間,本文將詳細(xì)介紹如何利用Tinify壓縮圖片,并將其上傳至OSS,重點(diǎn)介紹圖片壓縮實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-08-08
  • java多線程編程之使用thread類創(chuàng)建線程

    java多線程編程之使用thread類創(chuàng)建線程

    在Java中創(chuàng)建線程有兩種方法:使用Thread類和使用Runnable接口。在使用Runnable接口時(shí)需要建立一個(gè)Thread實(shí)例
    2014-01-01
  • 淺談cookie 和session 的區(qū)別

    淺談cookie 和session 的區(qū)別

    下面小編就為大家?guī)硪黄獪\談cookie 和session 的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java8的default方法詳細(xì)介紹

    Java8的default方法詳細(xì)介紹

    這篇文章主要介紹了Java8的default方法,詳細(xì)介紹了什么是default方法,在多繼承時(shí)的處理等,需要的朋友可以參考下
    2014-04-04
  • 解決使用@Value(${×××))從properties文件取值的坑

    解決使用@Value(${×××))從properties文件取值的坑

    這篇文章主要介紹了解決使用@Value(${×××))從properties文件取值的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java的線程阻塞、中斷及優(yōu)雅退出方法詳解

    Java的線程阻塞、中斷及優(yōu)雅退出方法詳解

    這篇文章主要介紹了Java的線程阻塞、中斷及優(yōu)雅退出方法詳解,Java中的線程阻塞是指當(dāng)一個(gè)線程無法繼續(xù)執(zhí)行時(shí),它會(huì)進(jìn)入阻塞狀態(tài),直到某個(gè)條件滿足后才能繼續(xù)執(zhí)行,線程阻塞可以通過多種方式實(shí)現(xiàn),需要的朋友可以參考下
    2023-10-10
  • Java?synchronized輕量級(jí)鎖實(shí)現(xiàn)過程淺析

    Java?synchronized輕量級(jí)鎖實(shí)現(xiàn)過程淺析

    這篇文章主要介紹了Java synchronized輕量級(jí)鎖實(shí)現(xiàn)過程,synchronized是Java里的一個(gè)關(guān)鍵字,起到的一個(gè)效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時(shí)禁止指令重排序和保證內(nèi)存的可見性
    2023-02-02
  • springboot 多環(huán)境配置 yml文件版的實(shí)現(xiàn)方法

    springboot 多環(huán)境配置 yml文件版的實(shí)現(xiàn)方法

    這篇文章主要介紹了springboot 多環(huán)境配置 yml文件版的實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java?17的一些新特性介紹

    Java?17的一些新特性介紹

    這篇文章主要介紹了Java?17的一些新特性介紹,Java添加了許多Java開發(fā)人員渴望的特性和改進(jìn),下文就來學(xué)習(xí)一下這些特性吧,需要的朋友可以參考一下
    2022-04-04

最新評(píng)論