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) |
- jni for linux Subash Bohra M
- RE: jni for linux Marcel Ruff
- Re: JNI for linux Chao Liu
- Re: JNI for linux Weiqi Gao
- Re: JNI for linux Weiqi Gao
- Fw: JNI for linux Chao Liu