Hello,
A problem was happened when I use JNI in linux to call my c programme. I used jdk1.3 and the following is my little test programm:
------JavaCallC.java-------------------
import java.lang.*;
public class  JavaCallC
{
 public JavaCallC()
 {
  System.loadLibrary("javac");
 }

 public native int StrInIntOut(String str);

 public native String IntInStrOut(int iIndex);

 public static void main(String[] args)
 {
     int tempint;
  String tempstr;
  JavaCallC obj = new JavaCallC();
     tempint=obj.StrInIntOut( "Hello");
     tempstr=obj.IntInStrOut(34);

  System.out.print(tempint);
     System.out.print(tempstr);
 }
}
-------------------end---------------------------
then javac JavaCallC.java, javah -jni JavaCallC

----------------JavaCallC.c-----------------------
#include <jni.h>    /* I have also try "include JavaCallC.h",error is still
JNIEXPORT jint JNICALL Java_JavaCallC_StrInIntOut(JNIEnv * jenv, jobject jobj, jstring jstr)
{
 const char * thestr;
 thestr=(*jenv)->GetStringUTFChars(jenv,jstr,0);
 return 1234;
}

JNIEXPORT jstring JNICALL Java_JavaCallC_IntInStrOut(JNIEnv * jenv, jobject jobj, jint icount)
{
 char cptext[]="Java callc test";
 long getint=icount;
 return (*jenv)->NewStringUTF(jenv,cptext);
}

------end---------------
then gcc -shared -o libjavac.so JavaCallC.c
then java JavaCallC
error was happened.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no javac in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1312)
        at java.lang.Runtime.loadLibrary0(Runtime.java:749)
        at java.lang.System.loadLibrary(System.java:820)
        at JavaCallC.<init>(JavaCallC.java:6)
        at JavaCallC.main(JavaCallC.java:17)

Reply via email to