PDA

View Full Version : how to JNI in Java



unix_svr4
سه شنبه 14 اسفند 1386, 17:53 عصر
کد های زیر را در نظر بگیرید.

1-فایل helloworld.java



class helloworld
{
public native void displayMessage();
static
{
System.loadLibrary("HelloWorldImp");
}
}


2-فایل main.java



class main
{
public static void main(String[] args)
{
HelloWorld hello = new HelloWorld();
hello.displayMessage();
}
}


3-فایل HelloWorld.cpp



#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_helloworld_displayMessage(JNIEnv *env, jobject obj)
{
printf("HelloWorld");
}


4-توسط دستور javac helloworld.java و javac main.java فایل های مورد نظر را کامپایل می کنیم و فایل های کلاس ایجاد می شوند.
5-توسط دستور javah -jni helloworld سرفایل مربوط به فایل کلاس helloworld را ایجاد می کنیم.
6-توسط دستور g++ -G -I/usr/jdk/instance/jdk1.5.0/include -I/usr/jdk/instance/include/solaris HelloWorld.cpp -o HelloWorldImp.so

من در سیستم عامل یونیکس (سولاریس) این کار را انجام دادم. همه چیز درست است ولی وقتی که می خواهم دستور java main را صادر کنم برنامه با یک پیام خطا مبنی بر اینکه نمی توانم فایل کتابخانه ای را پیدا کنم متوقف می شود.
از دوستانی که می دانند مشکل برنامه من از کجاست خواهش می کنم من را راهنمایی کنند.

متشکرم.

unix_svr4
پنج شنبه 16 اسفند 1386, 17:55 عصر
لطفا از لحن مناسب نوشتاری استفاده کنید

fkohantorabi
پنج شنبه 16 اسفند 1386, 18:26 عصر
من زیاد JNI کار نکردم که بتونم مشکلت رو حل کنم ولی کل stack trace رو بده شاید بشه توش چیزی پیدا کرد.


فرزاد-

unix_svr4
شنبه 18 اسفند 1386, 18:11 عصر
بالاخره تونستم مشکلم رو حل کنم. مشکل از نحوه کامپایل کردن فایل کتابخانه ای بود.

موفق باشید.