こういう、やる気のある人がいるっていうのは良いことだね。

NativeTest の Readme.txt の説明で Input_SJIS.o と Output_SJIS.o を
リンクしているけど、これを不要にするために jni にチャレンジしたんじゃないの?

結局、その試みは失敗しているようだけど…。せっかく jni にしているのに、
C側で CallObjectMethod() を使用して Java側の getBytes() を使っちゃったら
意味ないよね。コード変換を Java側でやることになるから jni の意味がない。

Input_SJIS.o, Output_SJIS.o の問題を回避するために jni を使うのであれば、
jniメソッドで受け取った jstring を GetStringChars で jchar* に変換してから
Win32API の WideCharToMultiByte() に渡してあげるといいよ。
これで、UTF-8 から SJIS に変換できるはず。