diff options
Diffstat (limited to 'src/windows/bin/java_md.c')
-rw-r--r-- | src/windows/bin/java_md.c | 27 |
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) { |