JAvaではjni(Java Native Interface)hello wordを使用!印刷
4647 ワード
手順1:Microsoft Visual Studio 2008をダウンロードします.ここでは2008を使用しています.
ダウンロード先:http://www.downza.cn/soft/10343.html#m_xgwzローカルダウンロードの選択
ステップ2:プロジェクト(my_jni)を作成し、cnを新規作成します.itcastパッケージ、classクラスTestNativeを新規作成します.
TestNativeにメソッドnativeを書いて修飾する
次にjavahコマンド(すなわちcmdでjavahを入力)を使用してcn_を生成します.itcast_TestNative.hファイル
手順3:vs 2008を開き、他の言語(Visuall C++--Win 32--Win 32コンソールアプリケーション--名前:nativeCode--OK)を開きます.
次に、ポップアップ・ダイアログ・ボックスで、DLL-空のアプリケーション設定を選択します.
手順4:ヘッダーファイルを右クリックして、既存のアイテムを追加します.先ほどのcn_を参照して追加します.itcast_TestNative.hファイル
手順5:ソースファイルを選択——右クリックで追加——新規項目——C++ファイル(.cppが接尾辞)——source.cpp——追加
コードの入力:
#include"cn_itcast_TestNative.h"#include using namespace std; JNIEXPORT void JNICALL Java_cn_itcast_TestNative_sayHello(JNIEnv * env, jobject obj) { cout< }
ステップ6:jniをコピーする.h、jni_md.h(2つのjdkの下の.hファイル)プロジェクトの下で、ヘッダーファイルディレクトリを選択-右クリック-既存の項目を追加-この2つを追加
jni.hパス:C:Program FilesJavajdk 1.8.0_101\include
jni_md.hパス:C:Program FilesJavajdk 1.8.0_101includewin 32(具体的な道路力はあなたのjdkのインストール経路によって)
cn_の追加が完了しましたitcast_TestNative.h、jni.h、jni_md.h 3つのファイルの後、そのパスをプロジェクトに追加する必要があります--属性--c+--一般属性の追加の含むディレクトリ
ステップ7:C/C++ソースファイルをダイナミックリンクライブラリ(DLL)すなわち先ほどの新規resourceにコンパイルする.cppファイルクリックコンパイル.生成dllファイル
手順8:DLLファイルをpath環境に入れて、XPの下で私のコンピュータ——右ボタンの属性——高級——環境の変数
マイパス:C:UsersAdministratorDocumentsVisual Studio 2008ProjectsativeCodeDebug 2008ProjectsativeCodeDebug
手順9:javaコードの実行
手順10:eclispを再起動し、表示データを実行する
よくある質問:
1.javahコマンドが見つかりません.jdk環境が整っていません.もう一度お付き合いします.
2.3つのファイルパスが見つかりません.no such file in...先ほど述べた3つのファイルパスを追加ディレクトリに追加しました
3.E:\Program Files\MyEclipse 10\apache-tomcat-7.0.23\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
これはあなたが生成したからです.dllファイルは32ビットですが、あなたのコンピュータは64の競合です.vs 2008をインストールするときに64ビットを選択してチェックするだけで、生成--構成管理で新しいx 64を選択できます.
4.「アプリケーションの並列構成が正しくないため、アプリケーションが起動できません.アプリケーション・イベント・ログを参照するか、コマンド・ラインsxstrace.exeツールを使用する」を参照してください.これは、アプリケーションが32ビット環境でコンパイルされ、64ビット環境で対応するC++ライブラリが見つからないためです.
vs 2008の実行ライブラリをダウンロードし、インストール実行をダウンロードするだけです.http://www.microsoft.com/zh-cn/download/details.aspx?id=13276
ダウンロード先:http://www.downza.cn/soft/10343.html#m_xgwzローカルダウンロードの選択
ステップ2:プロジェクト(my_jni)を作成し、cnを新規作成します.itcastパッケージ、classクラスTestNativeを新規作成します.
TestNativeにメソッドnativeを書いて修飾する
次にjavahコマンド(すなわちcmdでjavahを入力)を使用してcn_を生成します.itcast_TestNative.hファイル
手順3:vs 2008を開き、他の言語(Visuall C++--Win 32--Win 32コンソールアプリケーション--名前:nativeCode--OK)を開きます.
次に、ポップアップ・ダイアログ・ボックスで、DLL-空のアプリケーション設定を選択します.
手順4:ヘッダーファイルを右クリックして、既存のアイテムを追加します.先ほどのcn_を参照して追加します.itcast_TestNative.hファイル
手順5:ソースファイルを選択——右クリックで追加——新規項目——C++ファイル(.cppが接尾辞)——source.cpp——追加
コードの入力:
#include"cn_itcast_TestNative.h"#include using namespace std; JNIEXPORT void JNICALL Java_cn_itcast_TestNative_sayHello(JNIEnv * env, jobject obj) { cout< }
ステップ6:jniをコピーする.h、jni_md.h(2つのjdkの下の.hファイル)プロジェクトの下で、ヘッダーファイルディレクトリを選択-右クリック-既存の項目を追加-この2つを追加
jni.hパス:C:Program FilesJavajdk 1.8.0_101\include
jni_md.hパス:C:Program FilesJavajdk 1.8.0_101includewin 32(具体的な道路力はあなたのjdkのインストール経路によって)
cn_の追加が完了しましたitcast_TestNative.h、jni.h、jni_md.h 3つのファイルの後、そのパスをプロジェクトに追加する必要があります--属性--c+--一般属性の追加の含むディレクトリ
ステップ7:C/C++ソースファイルをダイナミックリンクライブラリ(DLL)すなわち先ほどの新規resourceにコンパイルする.cppファイルクリックコンパイル.生成dllファイル
手順8:DLLファイルをpath環境に入れて、XPの下で私のコンピュータ——右ボタンの属性——高級——環境の変数
マイパス:C:UsersAdministratorDocumentsVisual Studio 2008ProjectsativeCodeDebug 2008ProjectsativeCodeDebug
手順9:javaコードの実行
package cn.itcast;
public class TestNative {
// JAVAH native C/C++ 。
// JDK/bin javah.exe
public native void sayHello();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.loadLibrary("nativeCode");
TestNative tst=new TestNative();
tst.sayHello();
}
}
手順10:eclispを再起動し、表示データを実行する
よくある質問:
1.javahコマンドが見つかりません.jdk環境が整っていません.もう一度お付き合いします.
2.3つのファイルパスが見つかりません.no such file in...先ほど述べた3つのファイルパスを追加ディレクトリに追加しました
3.E:\Program Files\MyEclipse 10\apache-tomcat-7.0.23\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
これはあなたが生成したからです.dllファイルは32ビットですが、あなたのコンピュータは64の競合です.vs 2008をインストールするときに64ビットを選択してチェックするだけで、生成--構成管理で新しいx 64を選択できます.
4.「アプリケーションの並列構成が正しくないため、アプリケーションが起動できません.アプリケーション・イベント・ログを参照するか、コマンド・ラインsxstrace.exeツールを使用する」を参照してください.これは、アプリケーションが32ビット環境でコンパイルされ、64ビット環境で対応するC++ライブラリが見つからないためです.
vs 2008の実行ライブラリをダウンロードし、インストール実行をダウンロードするだけです.http://www.microsoft.com/zh-cn/download/details.aspx?id=13276