Thread View: be.comp.programming
1 messages
1 total messages
Started by Mikoyan
Sat, 05 Apr 2003 13:10
JNI Newbie: oproepen java methoden vanuit C
Author: Mikoyan
Date: Sat, 05 Apr 2003 13:10
Date: Sat, 05 Apr 2003 13:10
50 lines
2684 bytes
2684 bytes
Hallo,
ik probeer voor collega studenten een SystemTray te
schrijven voor een in Java geschreven ICQ/MSN/YAHOO
messenger. Nu verschijnt er in KDE/GNOME al een mooi
icoontje in the notification area (of hoe ze dat in
godsnaam nu ook mogen noemen), maar het ding begeeft
het wanneer het callbacks moet uitvoeren, maw. java
methodes oproepen vanuit de C code...
Een code sniplet volgt hieronder. Het ding crashed
blijkbaar op
listenercls = (*env)->GetObjectClass(env, listener);
maar ik heb het vermoeden dat het het al misloopt bij
de eerste ->GetObjectClass, vermits wanneer ik de waarde
van cls uitprint, die steeds anders is, en de waarde
van fid steeds nul is... Hopelijk kan iemand mij op
de goede weg zetten, dank bij voorbaat.
Mikoyan
<snip>
/*
* Gtk Callback Function
*/
static gboolean tray_clicked (GtkWidget *event_box,
GdkEventButton *event, gpointer data) {
JavaObject *javaObject = (JavaObject*) data;
JNIEnv *env = javaObject->env;
jobject obj = javaObject->obj;
jclass cls;
jobject listener;;
jclass listenercls;
jfieldID fid;
cls = (*env)->GetObjectClass(env, obj);
g_print("This Class : %d\n", cls);
fid = (*env)->GetFieldID(env, cls, "listener", "LSystemTrayListener");
g_print("Listener fid : %d\n", fid);
listener = (*env)->GetObjectField(env, obj, fid);
g_print("listener : %d\n", listener);
listenercls = (*env)->GetObjectClass(env, listener);
g_print("Listener Class : \n");
</snip>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads