It turns out that although the GetFieldID() method returns NULL, there is also a Java exception generated that must be handled.
The solution is to check for an exception and clear (or handle) it. The simplest solution is this:
fid = j.GetFieldID( jc, UTF8_SECPARM, SIG_SECPARM );
if ( JNI_TRUE == j.ExceptionCheck() ) {
j.ExceptionClear();
return;
}
... continue with fid ...