中原です。
私も同じような現象に見舞われてハマりました。
Javaサイドの戻り値に問題があるように思えなくていろいろ試した結果
Call<type>Method()でコールする時のパラメータに問題がありました。
(いまだに納得はいってないんですが)
解決策としては明示的にキャストしてやる事で解決できました。
> jmethodID mid = (*env)->GetMethodID(env,jcCallback,"getIpv6","(I)I");
>
> int ii = (int)(*env)->CallIntMethod(env, jcCallback ,mid, 444 );
上記の内容からすると"(I)I"なので
int ii = (int)(*env)->CallIntMethod(env, jcCallback ,mid,
(jint)444 );
とする事で戻り値が正しく取れないでしょうか?
少々確認していないので自身が無いですが確認してみてください。
以上