ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JNI(Java Native Interface) 사용하기
    Programming/JAVA 2015. 1. 26. 15:59

    윈도우 환경에서 JAVA 프로그램이 윈도우 창을 제어 할 수 있을지에 대한 의문점으로 시작됨..


    마우스나 키보드는 java.awt.Robot 클래스를 사용해서 제어 할 수 있지만..


    JAVA에서 실행된 창이 아닌, 다른 윈도우의 정보를 읽거나 제어하려면 윈도우 라이브러리를 호출 해야함.


    윈도우 레벨에서는 HWND(윈도우 핸들러)를 얻어와 마음대로 휘젓고 다닐수 있지만.. 


    그래서 찾은 결론이 JNI(Java Native Interface) or JNA(Java Native Access).. 


    1. HelloJNI.java 소스코드 작성



    2. HelloJNI.java 소스코드 컴파일 

    shell 에서..

    > javac -encoding UTF-8 HelloJNI.java 

    를 실행하면 'HelloJNI.class' 파일이 생성됨


    2. HelloJNI.h 파일 생성

    shell에서..

    >javah HelloJNI

    로 실행하면 나온다고 하지만.. 클래스파일을 찾을수 없다고 나옴..


    그래서,

    >javah C:\JAVA\JavaProject\JNI_Example\src\com\kss\jni\example\HelloJNI.java

    로 실행하면 된다고 하지만.. 클래스명을 찾을 수 없다고 나옴.. OTL..


    다른 블로거들은 여러가지 방법으로 해결했지만... 난 안됨 ㅠ 


    결국 해결방법은

    >cd C:\JAVA\JavaProject\JNI_Example

    프로젝트의 루트 폴더로 가서

    >javah -jni com.kss.jni.example.HelloJNI

    이렇게 자바 스타일의 풀 클래스 경로를 적어주니 

    C:\JAVA\JavaProject\JNI_Example\bin>dir

    C:\JAVA\JavaProject\JNI_Example\bin 디렉터리

    2015-01-28  오전 10:28    <DIR>          .

    2015-01-28  오전 10:28    <DIR>          ..

    2015-01-28  오전 10:06    <DIR>          com

    2015-01-28  오전 10:28               492  com_kss_jni_example_HelloJNI.h


    C:\JAVA\JavaProject\JNI_Example\bin>

    이렇게 .h파일이 생성됨.






    댓글

Designed by Tistory.