トップ 技術・仕様 JNI 使い方 JNIの簡単なサンプル

JNIの簡単なサンプル(Hello Worldを表示するプログラム)

このページでは、JNIの簡単な使い方(Hello Worldを表示するプログラム)を紹介しています。

概要

このページでは、 JNI(Java Native Interface)の簡単な使い方を紹介するため、 Hello World(簡単なアプリケーションのサンプル)を作成する情報を掲載しています。

動作環境

以下の環境で動作確認をおこないました。

Nativeメソッドを定義したJavaソース作成

$ vi NativeClass.java
public class NativeClass {
     public native void nativeMethod();
 }

Nativeメソッドを定義したJavaソースのコンパイル

$ export PATH=$PATH:/usr/java/jdk1.7.0_40/bin
$ javac *.java
$ ls
NativeClass.class  NativeClass.java

ヘッダーファイル生成

$ javah -jni NativeClass
$ ls
NativeClass.class  NativeClass.h  NativeClass.java

NativeClass.hの中身は次のようになります。

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

 #ifndef _Included_NativeClass
 #define _Included_NativeClass
 #ifdef __cplusplus
 extern "C" {
 #endif
 /*
  * Class:     NativeClass
  * Method:    nativeMethod
  * Signature: ()V
  */
 JNIEXPORT void JNICALL Java_NativeClass_nativeMethod
   (JNIEnv *, jobject);

 #ifdef __cplusplus
 }
 #endif
 #endif

Nativeメソッドを実装したCコード作成

$ vi NativeClass.java
#include <stdio.h>
 #include "NativeClass.h"

 JNIEXPORT void JNICALL Java_NativeClass_nativeMethod (JNIEnv* env, jobject thisObj) {
     printf("Hello World!!\n");
 }

Nativeメソッドを実装したCコードのコンパイル

$ gcc -I/usr/java/jdk1.7.0_40/include -I/usr/java/jdk1.7.0_40/include/linux -shared  -o libNative.so Native.c
$ ls
libNative.so  Native.c  NativeClass.class  NativeClass.h  NativeClass.java

Nativeメソッドを呼び出すJavaコード作成

$ vi Hello.java
public class Hello {
     public static void main(String[] args) {
         System.loadLibrary("Native");
         NativeClass nativeClass = new NativeClass();
         nativeClass.nativeMethod();
     }
 }

Nativeメソッドを定義したJavaソースのコンパイル

$ javac Hello.java
$ ls
Hello.class  Hello.java  libNative.so  Native.c  NativeClass.class  NativeClass.h  NativeClass.java

プログラムの実行

soファイルが見つかるようにパスを環境変数に追加します。

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<libNative.soが置かれているディレクトリのパス>

実行します。

$ java Hello
Hello World!!

※「cannot restore segment prot after reloc: Permission denied」などと実行時にエラーが発生する場合は、SELinuxの設定を行います。

# su
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t libNative.so
# exit

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Eclipse /gcc /gdb /Git /g++ /JDK /JUnit /ZAP

技術・仕様
Ajax /CORBA /Java EE(旧称J2EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /Lucene /MyBatis /Spring /Struts /Seasar2 /WordPress

ITインフラ OSとミドルウェア
Linux /Windows /シェル
Apache/Tomcat /MySQL /Redis /Solr /vsftpd

ITインフラ PC 製品
ZOTAC

ITインフラ サーバー
Web公開サーバー構築

ITインフラ ネットワーク
プログラミング /機器 /構築

ITインフラ セキュリティ
公開サーバーのセキュリティ

SI
ホームページの作り方 /小さな会社のISMS

その他
IT用語 /ITスキル体系 /トレンド履歴

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

34.231.21.123

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク