IT TIP

여러 시스템 속성 설정 Java 명령 줄

itqueen 2020. 12. 8. 20:33
반응형

여러 시스템 속성 설정 Java 명령 줄


-D 문을 여러 개 사용하는 것보다 명령 줄에서 Java 프로그램에 여러 시스템 속성을 지정하는 더 쉬운 방법이 있습니까?

이것을 피하려고 :

 java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar

-D후에 인용 된 문자열과 인용 된 문자열을 사용하는 사람의 예를 본 적이 있다고 생각 했지만 다시는 찾을 수 없습니다.


대답은 아니오입니다. 누군가 다음과 같은 것을 설정 한 예를 보았을 것입니다.

-DArguments=a=1,b=2,c=3,d=4,e=cow

그런 다음 응용 프로그램은 Arguments속성 문자열의 값을 구문 분석 하여 개별 값을 가져옵니다. 당신의에서 main(가정 입력 형식을 보장) 당신은 키 값을 얻을 수 있습니다 :

String line = System.getProperty("Arguments");
if(line != null) {
  String str[] = line.split(",");
    for(int i=1;i<str.length;i++){
        String arr[] = str[i].split("=");
        System.out.println("Key = " + arr[0]);
        System.out.println("Value = " +  arr[1]);
    }
}

또한,이 -D메인 클래스 또는 이전해야 jar자바 명령 줄에서 파일. 예 :java -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass


속성을 인수로 전달하는 대신 .properties를 사용하여 저장할 수 있습니다.


이와 같은 것에 대해 언급 하는 문서없습니다 .

다음은 인용문입니다.

-Dproperty = value 시스템 속성 값을 설정합니다. 값이 공백이 포함 된 문자열 인 경우 문자열을 큰 따옴표로 묶어야합니다.

java -Dfoo = "일부 문자열"SomeClass


JAVA_TOOL_OPTIONS환경 변수를 사용하여 옵션을 설정할 수 있습니다. 그것은 Rasbian과 함께 저에게 효과적이었습니다. 다음과 같이 말하는 환경 변수 및 시스템 속성참조하십시오 .

많은 환경에서 필요한 명령 줄 옵션을 사용하여 응용 프로그램을 시작하기 위해 명령 줄에 쉽게 액세스 할 수 없습니다.

이는 임베디드 VM을 사용하는 애플리케이션 (즉, VM을 시작하기 위해 JNI (Java Native Interface) 호출 API를 사용함) 또는 시작이 스크립트에 깊이 중첩 된 애플리케이션에서 종종 발생합니다. 이러한 환경에서 JAVA_TOOL_OPTIONS 환경 변수는 명령 줄을 확장하는 데 유용 할 수 있습니다.

이 환경 변수가 설정되면 JNI_CreateJavaVM 함수 (JNI 호출 API에서), JNI_CreateJavaVM 함수는 JavaVMInitArgs 인수에 제공된 옵션에 환경 변수 값을 추가합니다.

그러나이 환경 변수 사용은 보안상의 이유로 비활성화 될 수 있습니다.

경우에 따라이 옵션은 보안상의 이유로 비활성화됩니다. 예를 들어, Oracle Solaris 운영 체제에서이 옵션은 유효 사용자 또는 그룹 ID가 실제 ID와 다를 때 비활성화됩니다.

명령 줄에서 지정하는 것과 JAVA_TOOL_OPTIONS환경 변수를 사용하는 것의 차이점을 보여주는이 예를 참조하십시오 .

JAVA_TOOL_OPTIONS 환경 변수 사용을 보여주는 스크린 샷


필요한 속성을 시스템에 설정해야하는 경우 -D 옵션이 없지만 응용 프로그램을 부트 스트랩하는 동안 해당 속성이 필요한 경우 속성 파일을 통해 속성을로드하는 것이 가장 좋습니다. 단일 속성에 대한 빌드를 변경할 필요가 없습니다.

참고 URL : https://stackoverflow.com/questions/7351533/set-multiple-system-properties-java-command-line

반응형