这个问题是关于jni的。因为最近很多问题都与jni挂钩了。所以看了下jni.h,jni.cpp. 看到jni.cpp 我卡壳了!
问题1:jni.cpp包含的这2个文件在哪里?

# include "incls/_precompiled.incl"
# include "incls/_jni.cpp.incl"

问题2:这样的c++宏是什么意思 JNI_ENTRY 开头 JNI_END结束(下面是摘抄的一个例子)
DT_RETURN_MARK_DECL(DefineClass, jclass);JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderRef,
                                  const jbyte *buf, jsize bufLen))
  JNIWrapper("DefineClass");  DTRACE_PROBE5(hotspot_jni, DefineClass__entry,
    env, name, loaderRef, buf, bufLen);
  jclass cls = NULL;
  DT_RETURN_MARK(DefineClass, jclass, (const jclass&)cls);  // Since exceptions can be thrown, class initialization can take place  
  // if name is NULL no check for class name in .class stream has to be made.
  symbolHandle class_name;
  if (name != NULL) {
    const int str_len = (int)strlen(name);
    if (str_len > symbolOopDesc::max_length()) {
      // It's impossible to create this class;  the name cannot fit
      // into the constant pool.
      THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name);
    }
    class_name = oopFactory::new_symbol_handle(name, str_len, CHECK_NULL);
  }  ResourceMark rm(THREAD);
  ClassFileStream st((u1*) buf, bufLen, NULL);
  Handle class_loader (THREAD, JNIHandles::resolve(loaderRef));
  
  if (UsePerfData && !class_loader.is_null()) {
    // check whether the current caller thread holds the lock or not.
    // If not, increment the corresponding counter
    if (ObjectSynchronizer::
        query_lock_ownership((JavaThread*)THREAD, class_loader) != 
        ObjectSynchronizer::owner_self) {
      ClassLoader::sync_JNIDefineClassLockFreeCounter()->inc();
    }
  }
  klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
                                                     Handle(), &st, CHECK_NULL);  cls = (jclass)JNIHandles::make_local(
    env, Klass::cast(k)->java_mirror());
  return cls;
JNI_END

注:我在网上搜到这么个大略答案。上面包含的文件是构建过程中产生的。 但还是理解不上。希望那位老兄不吝赐教!