본문 바로가기
SW Developer

[JNI] javah Error : Could not find class file for 해결방법

by ashespia 2020. 8. 10.
SMALL
자바 네이티브 인터페이스 (Java Native Interface, JNI)는 자바 가상 머신 (JVM)위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들) 그리고 C, C++ 그리고 어샘블리 같은 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다.

 

 

자바 네이티브 인터페이스 (Java Native Interface, JNI) 예제들을 보면 1 depth여서 package로 묶어서 만드는 경우 error가 발생한다.

 

자바 네이티브 인터페이스 (Java Native Interface, JNI)의 전체 Flow는 아래와 같다.

 

 

자바 네이티브 인터페이스 (Java Native Interface, JNI) 생성 과정

 

 

javah 명령어를 통해서 JNI Header 파일을 생성하는데 전제조건이 있다.

 

1. 윈도우 환경에서 생성하는 경우 대소문자를 구별한다.

 

2. javah 명령어의 실행 경로설정을 잘 해줘야한다.

 

3. 패키지 설정을 한 경우 javah 명령어를 package 설정 상위 폴더에서 실행해줘야 한다.

 

 

 

예를 들어 Intellij IDEA를 통해 javac 명령어 빌드 한 경우

JAVAH 명령어 실행 위치는 빌드된 Out 폴더에서는 package명 위치까지 이동해서 명령어를 실행해야 한다.

 

 

아래 이미지에서 보는 것 처럼 package ami.jni인 경우에 해당 경로에서 package

 

아래 이미지는 SRC 폴더에서 JAVAH 명령어를 정상적으로 수행한 내용이다.

 

 

아래 이미지의 빨간색 block은 javah 명령어를 error 없이 실행 할 수 있는 경로 이다.

동일 폴더 하위에 JNI 헤더 파일이 생성된다.

 

 

생성된 JNI Header 파일로 cpp 파일을 생성하면 된다.

 

LIST

댓글