본문 바로가기

업무 채널

package 안에서 jni 사용하기

JNI를 사용하는 자바의 클래스가 (default package)가 아닌 다른 package에 있을 경우
(package명이 달라지게 되면) exception 오류가 나게된다.


왜냐?? JNI에 대한 라이브러리를 생성할 때 package 명에 맞게 헤더파일을 생성해야 하기 때문이다.. ㅡㅡ


가령 패키지명이 포함된 클래스의 풀네임이 aaa.kkkclass이라면 (패키지명).(클래스명)

해당 클래스 파일을 컴파일 한 후, 커맨드를 aaa의 상위 폴더에 위치시킨 후 다음 명령어를 실행한다.


>javah aaa.kkkclass


그럼 패키지명과 함께 적용된 헤더파일이 생성된다.


이제 dll 프로젝트에 헤더파일을 바꾸고 cpp파일의 함수명을 새로 생성된 헤더파일의 함수명으로 바꾸고 나니 패키지에 포함되어서도 정상적으로 작동하게 되었다.


결론은 java단에서 package 명이 달라질경우 dll을 새로 만들어 (위의 절차대로) 적용해야 한다는 것이다.

태그