-
Virtual Machine์์ ์คํ๋๋ java ํ๋ก๊ทธ๋จ์ด ํด๋น ํ๋ซํผ์ native code(C/C++)์ ์ ๊ทผํ ์ ์๋๋ก ์ ๊ณตํ๋ interface๋ฅผ ๋ปํจ.
-
C/C++๋ก ๊ตฌํ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๋ํ๊ธฐ ์ํด ์ฌ์ฉํจ
-
JNI๋ฅผ ํตํด C/C++ dll ์ฌ์ฉํ๊ธฐ
์๋ฐ์์ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ ์ธํฐํ์ด์ค๋ก, ์ ํด์ง ํํ๋ก c++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํ๊ฑฐ๋ JNI ๊ท๊ฒฉ์ ๋ฐ๋ฅด๋ฉด์ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ C++ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํด์ผ ํจ
-
STEP1 : native code๋ก java ์์ค ์ฝ๋ ์์ฑ
-
STEP2 : ์์ค ์ปดํ์ผํด์ * .class ํ์ผ ์์ฑ
-
STEP3 : javah๋ฅผ ์ด์ฉํด์ dll prototype์ด ํฌํจ๋์ด ์๋ * .h ํ์ผ ์๋ ์์ฑ
- javah๋ก ํค๋ ์์ฑํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ์๋ฌ
-
Error: Could not find class file for 'ํจํค์ง๋ช .ํด๋์ค๋ช '.
stackoverflow์ ๊ธ์ ๋ณด๊ณ ํด๊ฒฐ ์๋ฃ : ์ฐธ๊ณ ๋งํฌ โจ
-
- javah๋ก ํค๋ ์์ฑํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ์๋ฌ
-
STEP4 : ๋ง๋ค์ด์ง * .h ํ์ผ์ C/C++ dll ํ๋ก์ ํธ์ ์ถ๊ฐํ์ฌ ํด๋น ํจ์ ๊ตฌํ ๋ฐ ์ปดํ์ผ (dll ์์ฑ)
-
STEP5 : java์์ System.LoadLibrary๋ฅผ ํตํด dll ๋ถ๋ฌ์ค๊ณ ํด๋น ํจ์ ์ฌ์ฉ
-
์คํ ์ ๋ฐ์ํ ์๋ฌ
Error : java.lang.UnsatisfiedLinkError ไธญ B)Ljava/lang/String;
-
-
-
JNI์์ ์งํํ๋ ๊ฒ์ฒ๋ผ native code๋ก ํจ์ ๊ตฌํ, header ํ์ผ ์์ฑ
-
์ปค๋ฎค๋ํฐ์์ ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๊นํ๋ธ์์ ๋ค์ด๋ก๋ ๋ฐ๊ณ ํ๋ก์ ํธ์ ํฌํจ์์ผ์ผ ํจ
JNI์๋ ๋ฌ๋ฆฌ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ง ์์๋ ๊ฐํธํ๊ฒ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฐ์์ ์ฌ์ฉ ๊ฐ๋ฅํจ
-
STEP1 : ๊นํ๋ธ์์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋ โ github ๋งํฌ โจ
-
STEP2 : ๋ค์ด๋ฐ์ jna.jar๋ฅผ ๋น๋์ ํฌํจ์ํค๊ณ , ํด๋น dll์ ์๋ ํจ์ ์ฌ์ฉ
-
UnsatisfiedLinkError : Error looking up function ...
์๋ฌstackoverflow์ ๊ธ์ ๋ณด๊ณ ํด๊ฒฐ ์๋ฃ : ์ฐธ๊ณ ๋งํฌโจ
-
C/C++ ํ์ ๊ณผ java ํ์ ๋ณํ
-
java.lang.Error : Invalid memory access ...
์๋ฌ -
java.lang.IndexOutOfBoundsException : Bounds exceeds available space : size=8, offset=...
์๋ฌstackoverflow์ ๊ธ์ ๋ณด๊ณ ํด๊ฒฐ ์๋ฃ : ์ฐธ๊ณ ๋งํฌโจ
-
-