martin.out: New file.

* libjava.jni/martin.out: New file.
	* libjava.jni/martin.c: New file.
	* libjava.jni/martin.java: New file.

From-SVN: r39286
This commit is contained in:
Tom Tromey 2001-01-26 22:41:41 +00:00 committed by Tom Tromey
parent 66cce54da0
commit d0815622ea
4 changed files with 72 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2001-01-26 Tom Tromey <tromey@redhat.com>
* libjava.jni/martin.out: New file.
* libjava.jni/martin.c: New file.
* libjava.jni/martin.java: New file.
2001-01-16 Richard Henderson <rth@redhat.com>
* lib/libjava.exp (bytecompile_file): Don't unset CLASSPATH.

View File

@ -0,0 +1,41 @@
#include <jni.h>
#include "martin.h"
#include <stdio.h>
void Java_martin_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);
}

View File

@ -0,0 +1,21 @@
// Test case from Martin Kahlert <martin.kahlert@infineon.com>
public class martin {
public native void myNative(String s);
public void myJava(String s) {
s = s + ", Java";
System.out.println(s);
}
public static void main(String args[]) {
martin x = new martin();
x.myJava("Hello");
x.myNative("Hello, Java (from C)");
x.myJava("Goodbye");
}
static {
System.loadLibrary("martin");
}
}

View File

@ -0,0 +1,4 @@
Hello, Java
From C
Hello, Java (from C)
Goodbye, Java