src/share/native/java/lang/ClassLoader.c

Print this page

        

@@ -396,22 +396,26 @@
 
         cause = (*env)->ExceptionOccurred(env);
         if (cause) {
             (*env)->ExceptionClear(env);
             (*env)->Throw(env, cause);
+            if (!isBuiltin) {
             JVM_UnloadLibrary(handle);
+            }
             goto done;
         }
 
         if (!JVM_IsSupportedJNIVersion(jniVersion) ||
             (isBuiltin && jniVersion < JNI_VERSION_1_8)) {
             char msg[256];
             jio_snprintf(msg, sizeof(msg),
                          "unsupported JNI version 0x%08X required by %s",
                          jniVersion, cname);
             JNU_ThrowByName(env, "java/lang/UnsatisfiedLinkError", msg);
+            if (!isBuiltin) {
             JVM_UnloadLibrary(handle);
+            }
             goto done;
         }
         (*env)->SetIntField(env, this, jniVersionID, jniVersion);
     } else {
         cause = (*env)->ExceptionOccurred(env);

@@ -456,11 +460,13 @@
     if (JNI_OnUnload) {
         JavaVM *jvm;
         (*env)->GetJavaVM(env, &jvm);
         (*JNI_OnUnload)(jvm, NULL);
     }
+    if (!isBuiltin) {
     JVM_UnloadLibrary(handle);
+    }
     JNU_ReleaseStringPlatformChars(env, name, cname);
 }
 
 /*
  * Class:     java_lang_ClassLoader_NativeLibrary