Java JNI Test
1. HelloWorld
가. Java
Test.java
public class Test {
public Test(){
} static{ System.loadLibrary("JniTest"); } public native static void getTest();
public static void main(String[] args){ Test test = new Test(); test.getTest(); } }
|
나. C++
Test.cpp
#include <jni.h> #include "Test.h" #include <iostream> /* * Class: Test * Method: getTest * Signature: ()V */ JNIEXPORT void JNICALL Java_Test_getTest (JNIEnv *, jclass jobj){
std::cout<<"Hello"<<std::endl; }
|
다. 순서
1) javah -jni Test (Test.h 헤더 파일 생성)
2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux Test.cpp (Object 생성)
3) g++ -shared -o libJniTest.so Test.o (Dll/SO 파일 생성)
4) java -Djava.library.path=. Test (실행)
2. C++ String 값 받아오기
가. Java
com.jni.test,JniTest.java
package com.jni.test;
public class JniTest {
static{ System.loadLibrary("JniStringTest"); } public JniTest(){ String msg= getMessage(); System.out.println(msg); } public native static String getMessage();
public static void main(String[] args){ new JniTest(); } }
|
나. C++
Test.cpp
#include <jni.h> #include <stdlib.h> #include "com_jni_test_JniTest.h" /* Class: com_jni_test_JniTest * Method: getMessage * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_jni_test_JniTest_getMessage(JNIEnv * env, jclass jobj){ jstring msg; msg = env->NewStringUTF("hhhh"); return msg; } |
다. 순서
1) javah -jni com.jni.test.JniTest
2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux com_jni_test_JniTest.cpp
3) g++ -shared -o libJniStringTest.so com_jni_test_JniTest.o
4) java -Djava.library.path=. com.jni.test.JniTest (실행)
3. C++ String 값 넘기기
가. Java
com.jni.test,JniReturnTest.java
package com.jni.test;
public class JniReturnTest {
static{ System.loadLibrary("jniReturnTest"); } public static native String getMassageDiff(String msg); public static void main(String[] args){ String msg = JniReturnTest.getMassageDiff("donghun"); System.out.println(msg); } }
|
나. C++
com_jni_test_jniReturnTest.cpp
#include <jni.h> #include <stdlib.h> #include "com_jni_test_JniReturnTest.h" JNIEXPORT jstring JNICALL Java_com_jni_test_JniReturnTest_getMassageDiff (JNIEnv * env, jclass jobj,jstring jstr1) { char temp[256] = {0}; jstring msg; char* param=(char*)env->GetStringUTFChars(jstr1,0); sprintf(temp,"%s hun",param); msg = env->NewStringUTF(temp); free(param); return msg; }
|
다. 순서
1) javah -jni com.jni.test.JniTest
2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux com_jni_test_JniTest.cpp
3) g++ -shared -o libJniReturnTest.so com_jni_test_jniReturnTest.cpp.o
4) java -Djava.library.path=. com.jni.test.JniReturnTest (실행)
* 10204_vista_w2k8_x64_production_db 압축배포판 기준으로 설명하겠습니다
1.10204_vista_w2k8_x64_production_db\database\install 폴더안에 있는
oraparam.ini 파일을 열어줍니다
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0
를 찾아서 다음과 같이 바꿔줍니다
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0,6.1
2. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db폴더 안에 있는
refhost.xml 파일을 열어줍니다
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS> 를 찾아서
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS>
로 바꿔줍니다
3. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db_prereqs\db 폴더 안에 있는
refhost.xml 파일을 열어줍니다 (주의 : 2번의 폴더 경로와 다릅니다 확인해주세요.)
참고 :
http://www.supercorea.com/html/entry/Windows-7-64Bit-%EC%97%90%EC%84%9C-%EC%98%A4%EB%9D%BC%ED%81%B4-DBClient-%EC%84%A4%EC%B9%98-%EB%B0%8F-Toad-%EC%9D%B4%EC%9A%A9%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD?SESSIONsupercoreacomhtml=6c1cae7a39eacbfe62730f45399c5fdb
클라이언트 설치시
Oracle Database 10g Client Release 2 (10.2.0.4)
10204_vista_w2k8_x64_production_client.zip (507,934,134 bytes)
다운로드 받은 후 압축파일을 풀고 아래 3개파일을 빨간색 부분처럼 수정합니다.
1. \install\oraparam.ini
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0,6.1
2. \stage\prereq\client\refhost.xml
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<!--Microsoft Windows 2000-->
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<!--Microsoft Windows XP-->
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<!--Microsoft Windows 2003-->
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS>
3. \stage\prereq\client_prereqs\client\refhost.xml
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<!--Microsoft Windows 2000-->
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<!--Microsoft Windows XP-->
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<!--Microsoft Windows 2003-->
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS>
이상 3개 파일을 수정하면 설치가 됩니다 ㅎㅎㅎ
Webwork 가이드 링크~ (0) | 2010.07.21 |
---|---|
개발자로서.. 읽어봐야 할 필수 도서!! (0) | 2010.07.20 |
배치 파일 만들기!! && 자바에서 Batch File 실행하기!! (0) | 2010.07.19 |
추천 블로그.. (0) | 2010.07.16 |
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점 (0) | 2010.07.15 |
Oracle10g Win7 설치 (0) | 2010.07.30 |
---|---|
개발자로서.. 읽어봐야 할 필수 도서!! (0) | 2010.07.20 |
배치 파일 만들기!! && 자바에서 Batch File 실행하기!! (0) | 2010.07.19 |
추천 블로그.. (0) | 2010.07.16 |
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점 (0) | 2010.07.15 |
Oracle10g Win7 설치 (0) | 2010.07.30 |
---|---|
Webwork 가이드 링크~ (0) | 2010.07.21 |
배치 파일 만들기!! && 자바에서 Batch File 실행하기!! (0) | 2010.07.19 |
추천 블로그.. (0) | 2010.07.16 |
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점 (0) | 2010.07.15 |
Oracle10g Win7 설치 (0) | 2010.07.30 |
---|---|
Webwork 가이드 링크~ (0) | 2010.07.21 |
개발자로서.. 읽어봐야 할 필수 도서!! (0) | 2010.07.20 |
추천 블로그.. (0) | 2010.07.16 |
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점 (0) | 2010.07.15 |
Oracle10g Win7 설치 (0) | 2010.07.30 |
---|---|
Webwork 가이드 링크~ (0) | 2010.07.21 |
개발자로서.. 읽어봐야 할 필수 도서!! (0) | 2010.07.20 |
배치 파일 만들기!! && 자바에서 Batch File 실행하기!! (0) | 2010.07.19 |
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점 (0) | 2010.07.15 |
Oracle10g Win7 설치 (0) | 2010.07.30 |
---|---|
Webwork 가이드 링크~ (0) | 2010.07.21 |
개발자로서.. 읽어봐야 할 필수 도서!! (0) | 2010.07.20 |
배치 파일 만들기!! && 자바에서 Batch File 실행하기!! (0) | 2010.07.19 |
추천 블로그.. (0) | 2010.07.16 |