Java -D 명령줄 매개 변수의 올바른 사용
Java에서 -D 파라미터를 전달할 때 명령줄을 작성한 후 코드에서 액세스하는 적절한 방법은 무엇입니까?
예를 들면 이런 걸 써보려고 했는데...
if (System.getProperty("test").equalsIgnoreCase("true"))
{
//Do something
}
그리고 이렇게 부르면...
java -jar myApplication.jar -Dtest="true"
하지만 Null Pointer를 받았습니다.예외.내가 뭘 잘못하고 있지?
내 생각엔 당신이 '-D' 뒤에 "-D"를 붙이는 게 문제인 것 같아요-jar
. 시험해 보세요:
java -Dtest="true" -jar myApplication.jar
명령줄 도움말에서 다음을 수행합니다.
java [-options] -jar jarfile [args...]
다시 말해, 지금 당신이 가지고 있는 방식이-Dtest="true"
의론의 하나로서main
JVM 인수 대신 사용할 수 있습니다.
(아마도 인용구를 빼야 할 것 같습니다만, 어쨌든 효과가 있을 것입니다.아마도 고객님의 껍질에 따라 다를 수 있습니다.
다음 중 하나여야 합니다.
java -Dtest="true" -jar myApplication.jar
그러면 다음 값이 반환됩니다.
System.getProperty("test");
값은 다음과 같습니다.null
단, 예외에 주의할 필요가 있습니다.Boolean
:
boolean b = Boolean.parseBoolean( System.getProperty( "test" ) );
이 메서드는 시스템 속성 값을 위임하여 코드를 다음과 같이 단순화합니다.
if( Boolean.getBoolean( "test" ) ) {
// ...
}
Java 대신 프로그램에 파라미터를 부여하고 있습니다.사용하다
java -Dtest="true" -jar myApplication.jar
대신.
사용을 검토하다
"true".equalsIgnoreCase(System.getProperty("test"))
NPE를 회피합니다.그러나 항상 "요다 조건"을 아무 생각 없이 사용하지 마십시오. NPE를 던지는 것이 올바른 행동일 수도 있고, 때로는 다음과 같은 것이 있습니다.
System.getProperty("test") == null || System.getProperty("test").equalsIgnoreCase("true")
is right(기본값이 true인 경우)입니다.보다 짧은 가능성은
!"false".equalsIgnoreCase(System.getProperty("test"))
이중 부정을 사용하지 않는 것이 오해를 덜 어렵게 하는 것은 아닙니다.
언급URL : https://stackoverflow.com/questions/5045608/proper-usage-of-java-d-command-line-parameters
'programing' 카테고리의 다른 글
Vue + Vuex를 사용하여 렌더링하기 전에 개체의 속성을 상태로 가져올 수 없습니다. (0) | 2022.08.12 |
---|---|
pthread 대기 조건 주변에서 while loop이 필요한 이유는 무엇입니까? (0) | 2022.08.11 |
오류: 'optionalChaining' 실험 구문은 현재 지원되지 않지만 다음과 같습니다. (0) | 2022.08.11 |
Eclipse .classpath / .프로젝트 파일에는 무엇이 있습니까? (0) | 2022.08.11 |
java.util 입니다.정말 그렇게 무작위로요?52! (팩토리얼) 가능한 시퀀스를 생성하려면 어떻게 해야 합니까? (0) | 2022.08.11 |