MikeVader Geschrieben 25. November 2005 Teilen Geschrieben 25. November 2005 Ich habe ein "kleines" Problem mit Callbacks vom native Code auf Java Methoden. Mein System sieht kurz abgerissen so aus: Ich habe eine Klasse Service, welche einige native Methoden besitzt und eine Callback Methode (normale Java Methode). Die native Methoden werden im native code (einer C++ dll) implementiert. Diese DLL besitzt mehrere Threads. Einer dieser Threads sollte nun sporadisch die Callback Methode aufrufen. Ich habe dies folgendermassen versucht: Bei JNI_Onload habe ich den Pointer auf die JavaVM gespeichert. Sobald nun der Thread die Callbackmethode aufrufen sollte, holt er sich über die JVM das JNI Environment und über dieses dann die Objekt und Method Daten für den Aufruf. Hier tritt nun der Fehler auf. Sobald ich ihrgend eine Methode von JNIEnv aufrufe kommt einen Access Violation Exception (bzw. die jvm wird vom System abgeschossen). Der Code ist richtig implementiert. Ich habe dies ausprobiert, indem ich ihn in eine JNI native Methode gepackt habe und diese Methode von Java aufrief. Leider ist dies ja keine Option, da der Callback nicht von einem JNI Aufruf abhängig ist. Ihrgend eine Idee wieso es nicht funktioniert? Eine Bestätigung, dass es nicht funktioniert würde mir schon helfen. P.S. Ich weiss, dass ich das Problem mit Pullen oder anderen Wegen lösen kann. Mir geht es nur darum, wieso ein Callback nur funktioniert, wenn er aus einer JNI native Methode kommt. P.P.S. Ach ja synchronisation kann auch kein Problem sein ... nur schon das holen des Monitors gibt eine Exception. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.