Ich schreibe gerade ein Java-Workbench, mit der ich einen
C-Code, der später in einer MCU sein Unwesen treiben wird,
komfortabel auf Herz und Nieren prüfen kann.
Ich habe jetzt ein Problem beim Aufruf einer Info-Methode
an das Java-Programm (das gewissermaßen den IO-Anteil simuliert)
die einfach nur einen String übergeben soll.
Hier der reduzierte Code
Der Aufruf der Java-Methode sinfo(String info) erzeugt nach einer
gewissen Zeitspanne einen Crash der JVM. Nicht direkt reproduzierbar,
da der Methodenaufruf einige Male funktioniert bevor er zum Crash führt.
Schreibe ich im obigen Code #if 0 (Ich gebe den String also einfach via puts aus,
gibt es keine Probleme , womit ich also Fehler in anderen Codestellen ausschließen kann.
Da ich später allerdings innerhalb des Java-Programms auf die von C gesendeten
Informationen reagieren will, brauche ich auch die C-->Java Kommunikation.
Die Variablen theEnv und theObj sind die beim ersten Aufruf einer Methode von Java--->C
gespeicherten Variablen env und obj.
Weiß jemand Rat?
C-Code, der später in einer MCU sein Unwesen treiben wird,
komfortabel auf Herz und Nieren prüfen kann.
Ich habe jetzt ein Problem beim Aufruf einer Info-Methode
an das Java-Programm (das gewissermaßen den IO-Anteil simuliert)
die einfach nur einen String übergeben soll.
Hier der reduzierte Code
Code:
void infoJava() {
#if JAVA
# if 1
jclass cls = (*theEnv)->GetObjectClass(theEnv, theObj);
jmethodID mid = (*theEnv)->GetStaticMethodID(theEnv, cls, "sinfo", "(Ljava/lang/String;)V");
(*theEnv)->CallStaticVoidMethod(theEnv, theObj, mid, (*theEnv)->NewStringUTF(theEnv, infoBuf));
# else
puts(infoBuf);
fflush(stdout);
# endif
#endif
}
Der Aufruf der Java-Methode sinfo(String info) erzeugt nach einer
gewissen Zeitspanne einen Crash der JVM. Nicht direkt reproduzierbar,
da der Methodenaufruf einige Male funktioniert bevor er zum Crash führt.
Schreibe ich im obigen Code #if 0 (Ich gebe den String also einfach via puts aus,
gibt es keine Probleme , womit ich also Fehler in anderen Codestellen ausschließen kann.
Da ich später allerdings innerhalb des Java-Programms auf die von C gesendeten
Informationen reagieren will, brauche ich auch die C-->Java Kommunikation.
Die Variablen theEnv und theObj sind die beim ersten Aufruf einer Methode von Java--->C
gespeicherten Variablen env und obj.
Weiß jemand Rat?