Does jni work?
Martin Kahlert
martin.kahlert@infineon.com
Fri Jan 26 07:16:00 GMT 2001
Hi,
it's me again!
There seem to be more . versus / issues lurking, here.
The following works:
#include <jni.h>
#include "sample.h"
#include <stdio.h>
void Java_sample_myNative(JNIEnv* env, jobject this, jstring s)
{
jclass cls;
jfieldID fid;
jobject obj;
jmethodID mid;
printf("from C\n");
cls = (*env)->FindClass(env, "java/lang/System");
if (cls == 0) {
printf("java/lang/System lookup failed\n");
return;
}
fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava.io.PrintStream;");
if (fid == 0) {
printf("java/lang/System::out lookup failed\n");
return;
}
obj = (*env)->GetStaticObjectField(env, cls, fid);
if (obj == 0) {
printf("GetStaticObjectField call failed\n");
return;
}
cls = (*env)->GetObjectClass(env, obj);
if (cls == 0) {
printf("GetObjectClass(out) failed\n");
return;
}
mid = (*env)->GetMethodID(env, cls, "println", "(Ljava.lang.String;)V");
if (mid == 0) {
printf("println method lookup failed\n");
return;
}
(*env)->CallVoidMethod(env, obj, mid, s);
}
According to
http://java.sun.com/docs/books/tutorial/native1.1/implementing/field.html
it should read for example
fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;");
I would correct these issues, if anybody gave me a hint where the
functions GetStaticFieldID... are implemented.
At least i have workaround,
Thanks for all your great work,
Martin.
--
The early bird gets the worm. If you want something else for
breakfast, get up later.
More information about the Java
mailing list