aboutsummaryrefslogtreecommitdiff
path: root/src/windows/bin/java_md.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/bin/java_md.c')
-rw-r--r--src/windows/bin/java_md.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/windows/bin/java_md.c b/src/windows/bin/java_md.c
index 2db1f25e2..557b5667c 100644
--- a/src/windows/bin/java_md.c
+++ b/src/windows/bin/java_md.c
@@ -993,9 +993,34 @@ ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void
return rslt;
}
-/* Linux only, empty on windows. */
+/* Unix only, empty on windows. */
void SetJavaLauncherPlatformProps() {}
+/*
+ * The implementation for finding classes from the bootstrap
+ * class loader, refer to java.h
+ */
+static FindClassFromBootLoader_t *findBootClass = NULL;
+
+jclass FindBootStrapClass(JNIEnv *env, const char *classname)
+{
+ HMODULE hJvm;
+
+ if (findBootClass == NULL) {
+ hJvm = GetModuleHandle(JVM_DLL);
+ if (hJvm == NULL) return NULL;
+ /* need to use the demangled entry point */
+ findBootClass = (FindClassFromBootLoader_t *)GetProcAddress(hJvm,
+ "JVM_FindClassFromBootLoader");
+ if (findBootClass == NULL) {
+ JLI_ReportErrorMessage(DLL_ERROR4,
+ "JVM_FindClassBootLoader");
+ return NULL;
+ }
+ }
+ return findBootClass(env, classname, JNI_FALSE);
+}
+
void
InitLauncher(boolean javaw)
{