java -jar 옵션 사용 시 -cp 옵션은 무시됨

(이거 때문에 수많은 구글링을 ㅠㅠ)




첫번째 사용법.


java -cp external_library.jar:runnable.jar package.subpackage.Main


이렇게 사용하면 일단 실행은 가능.

하지만 매번 실행 클래스를 지정해주어야 하는 번거로움이 있음.




두번째 사용법.


특정 경로에 대해 필요한 jar 를 동적으로 로딩

참조 : http://stove99.tistory.com/64


나는 위 URL 의 RuntimeJarLoader.loadJarIndDir 내부에서

특정 문구가 포함된 jar 만 로딩하도록 변경하여 적용하였다.






덧.

첫번째 사용법에 대해 뻘짓하며 열심히 구글링 했는데..

수없이 열어놓은 브라우저 탭을 정리하면서 깨달았다.


https://minchangdev.wordpress.com/2014/04/16/java-jar-%EC%8B%A4%ED%96%89%EC%8B%9C-%EC%99%B8%EB%B6%80-jar-%ED%8C%8C%EC%9D%BC%EC%97%90-%EB%8C%80%ED%95%9C-classpath-%EA%B0%80-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4/


이 블로그 글이 첫번째 사용법이랑 동일한 얘기군; ㅠㅠ






+ 추가

classpath 옵션은 줄 수 없지만, 아래와 같은 형태로 진행 가능


java -Djava.library.path=/external/library/directory1 -jar runnable.jar


OS 의 라이브러리 경로 (ex. LD_LIBRARY_PATH) 변경이 필요할 경우에는,

테스트용 script 파일을 만든 뒤 파일 내부에서 아래와 같은 형태로 진행 가능


export LD_LIBRARY_PATH=/external/library/directory1

java -Djava.library.path=/external/library/directory2 -jar runnable.jar


* 위와 같이 설정할 경우 java 코드를 통해 출력해보면 아래와 같다.


Library path (OS) : /external/library/directory1

library Path (Java) : /external/library/directory2

+ Recent posts