jar 파일안에 있는 dll 로드하기
JAVA / 2011. 9. 27. 00:53
JNI 를 사용하기 위해 자바에서는 dll 파일이나 so 파일을 로드하여 사용합니다.
하지만 jar 파일 안에 위와 같은 라이브러리 파일이 있을 경우 별도의 로직으로 로딩을 해야 합니다.
NativeLoader.java
load() 메소드에 라이브러리 이름을 지정하면 해당 클래스로더에서 라이브러리를 로드하게 됩니다.
주의사항
라이브러리를 로드하여 파일과 최초로 호출되는 파일이 동일할 경우 ClassLoader 에서 InputStream 을 정상적으로 가지고 오지 못하는 경우가 있습니다. 예를 들어 A.class.getClassLoader().getResourceAsStream("...") 를 통해 라이브러리에 접근한다고 할 때, 최초로 해당 jar 파일에 접근하는 클래스가 A 일경우 정상적으로 확인이 되지 않습니다. B 클래스를 통해 A 를 이용하여 라이브러리를 로드하면 정상적으로 수행됩니다.