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

관련 링크 : https://zeroturnaround.com/software/jrebel/quickstart/intellij/enable-automatic-compilation-in-intellij-idea/


1. 인텔리제이 환경설정 - 컴파일러 옵션에서

"Make project automatically" (혹은 "Build project automatically")

기능을 켜고,


2. Ctrl + Shift + A (mac 에서는 Cmd + Shift + A) 누르고 검색창에서 Registry 를 검색해서 연다.


3. "compiler.automake.allow.when.app.running" 기능을 켠다.



* 컴파일러 옵션을 켜도 레지스트리 옵션을 키지 않으면 적용되지 않는다.

* 단순 코드 테스트를 위한 application 프로젝트 수행 시 적용하는 부분으로, 웹 프로젝트의 디플로이 및 업데이트와는 다른 부분이다.


// 메모리 초기화

System.gc();


long useMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

logger.info(String.format("MEMORY USED : %d MB", useMemory/1024/1024));

+ Recent posts