< prev index next >
src/java.base/macosx/native/libjli/java_md_macosx.m
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -518,10 +518,26 @@
if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, lastPathComponent, sizeOfLastPathComponent - 1)) {
realPathToSelf[indexOfLastPathComponent + 1] = '\0';
return JNI_TRUE;
}
+ // If libjli.dylib is loaded from a macos bundle MacOS dir, find the JRE dir
+ // in ../Home.
+ const char altLastPathComponent[] = "/MacOS/libjli.dylib";
+ sizeOfLastPathComponent = sizeof(altLastPathComponent) - 1;
+ if (pathLen < sizeOfLastPathComponent) {
+ return JNI_FALSE;
+ }
+
+ indexOfLastPathComponent = pathLen - sizeOfLastPathComponent;
+ if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, altLastPathComponent, sizeOfLastPathComponent - 1)) {
+ JLI_Snprintf(realPathToSelf + indexOfLastPathComponent, sizeOfLastPathComponent, "%s", "/Home");
+ if (access(realPathToSelf, F_OK) == 0) {
+ return JNI_TRUE;
+ }
+ }
+
if (!speculative)
JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL);
return JNI_FALSE;
}
< prev index next >