Java 从本机c代码执行静态方法

Java 从本机c代码执行静态方法,java,java-native-interface,execution,Java,Java Native Interface,Execution,我必须从c调用一些静态java方法 SOME-C-CODE (*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val); SOME-C-CODE (*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val); SOME-C-CODE (*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val); SOME-C-COD

我必须从c调用一些静态java方法

SOME-C-CODE
(*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val);
SOME-C-CODE
(*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val);
SOME-C-CODE
(*g_env)->CallStaticVoidMethodA(g_env, g_obj, g_mid, val);
SOME-C-CODE
我必须在不同的地方多次调用java方法。但是代码首先执行所有java方法,然后执行本机代码。 请告诉我如何按照所需的执行顺序运行代码


另外,我缓存了jvm、jobject和jmethod,并使用AttachCurrentThread和DetachCurrentThread将它们附加到当前线程

您如何知道所有Java方法都是先执行的?如果您只是将日志打印到控制台,您需要知道Java System.out.println和C printf是缓冲的,并且它们有不同的缓冲区,因此您的输出可能会出错,所以您可能需要在每次打印一行文本时调用System.out.flush和fflushstdout。非常感谢@pelya。该问题与缓冲区有关,目前正在工作,可能存在重复