java vm argument 프로그램으로 지정하기

PUBLISHED 2011. 2. 14. 18:10
POSTED IN 공장

jvm이 구동되고 자바 프로그램에서는 다음과 같이 시스템 속성을 가지고 올 수 있다. 실행 결과를 몇줄 꺼내보면 이렇다.

getProperties()로 가져왔으니, setProperty를 통해 설정이 가능할것만 같다.

실행결과


하나 더 실험해보자.

결과는 이렇다.

절대경로가 아니라서 혹은 실제로 존재하지 않는 라이브러리이기 때문에 로드가 되지 않았는가?
그건 아니다.


ClassLoader 클래스까지 따라가고, 자바가 시작될때 bootstrap, extension, system등 서로 다른 클래스 로더가 사용된다는 점이 확인되면 왜 그런지 확인 가능!

어쨌거나...
동일한 ClassLoader를 사용하는 레벨에서 시스템 속성에 값을 넣고, 공유한다면 문제 없겠지만
java.library.path 와 같이 서로 다른 ClassLoader를 넘나드는 소스 사이에서는 System.getProperty()를 통해 가져오는 값이 서로 다르기 때문에 위와 같은 현상이 발생한다.

결론적으로 java vm argument는 실행시점에 직접주자.


java -Djava.library.path=abcd Main 이런식으로...

'공장' 카테고리의 다른 글

java native code 호출하기  (0) 2011.02.15
OSGi, native 코드 연동  (0) 2011.02.15
Axis2, 프로그램으로 서버 띄우기  (0) 2011.02.11