본문 바로가기

JAVA

jni compile

// Base java source
// HelloWorld.java
//
import java.io.*;

public class HelloWorld
{
    public native void printMsg();    // native

    void init()
    {
        System.loadLibrary("HelloWorld");
    }
    
    public static void main (String args[])
    {
        HelloWorld hello = new HelloWorld();
        hello.init();
        hello.printMsg();
    }
}

// -----------------------------------------------------------
// Compile
// -----------------------------------------------------------

javac HelloWorld.java        // compile java
javah -jni HelloWorld        // create header file for cpp

// -----------------------------------------------------------
// result javah
// -----------------------------------------------------------

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: printMsg
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_printMsg
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

// -----------------------------------------------------------
// CPP FILE
// -----------------------------------------------------------

#include "HelloWorld.h"
#include <iostream>

/*
* Class: HelloWorld
* Method: printMsg
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_printMsg (JNIEnv *env, jobject me)
{
    std::cout << "Hello world (JNI)" << std::endl;
}

// -----------------------------------------------------------
// SETTING
// -----------------------------------------------------------

cd ~
vi .bashrc

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
export LD_LIBRARY_PATH=/home/kurome/jnipath        # LIBRARY PATH WITH *.so

// -----------------------------------------------------------
// COMPILE CPP
// -----------------------------------------------------------

// linux
g++ -shared -I$JAVA_HOME/include -I$JAVA_HOME/include/linux HelloWorld.c -o libHelloWorld.so

// -----------------------------------------------------------
// RUN
// -----------------------------------------------------------

java HelloWorld

'JAVA' 카테고리의 다른 글

setup tomcat  (0) 2013.09.26
links  (0) 2013.09.26
jni interface  (0) 2013.09.26
jdk 1.6 + eclise 3.4  (0) 2013.09.26
byteToString  (0) 2013.09.26