From e9a8aa2e65b2b061c08a931d5425514a75e7d86d Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Fri, 19 Apr 2013 18:28:20 -0700 Subject: [PATCH] set boot library if run as java or javac command If sun.java.command or sun.java.launcher are set, then the VM is being loaded from e.g. libjvm.so, not as a stand-alone executable. This commit allows libjvm.dylib to be used with OpenJDK's java command on OS X. --- src/avian/jnienv.h | 2 ++ src/jnienv.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/avian/jnienv.h b/src/avian/jnienv.h index 06036e2b0d..a1f2ff90aa 100644 --- a/src/avian/jnienv.h +++ b/src/avian/jnienv.h @@ -14,6 +14,8 @@ #include "avian/machine.h" #define BOOTSTRAP_PROPERTY "avian.bootstrap" +#define JAVA_COMMAND_PROPERTY "sun.java.command" +#define JAVA_LAUNCHER_PROPERTY "sun.java.launcher" #define CRASHDIR_PROPERTY "avian.crash.dir" #define EMBED_PREFIX_PROPERTY "avian.embed.prefix" #define CLASSPATH_PROPERTY "java.class.path" diff --git a/src/jnienv.cpp b/src/jnienv.cpp index 334d36d3ba..4fdb0cb618 100644 --- a/src/jnienv.cpp +++ b/src/jnienv.cpp @@ -3829,6 +3829,14 @@ JNI_CreateJavaVM(Machine** m, Thread** t, void* args) sizeof(BOOTSTRAP_PROPERTY)) == 0) { bootLibraries = p + sizeof(BOOTSTRAP_PROPERTY); + } else if (strncmp(p, JAVA_COMMAND_PROPERTY "=", + sizeof(JAVA_COMMAND_PROPERTY)) == 0 + or strncmp(p, JAVA_LAUNCHER_PROPERTY "=", + sizeof(JAVA_LAUNCHER_PROPERTY)) == 0) + { + // this means we're being invoked via the javac or java + // command, so the bootstrap library should be e.g. libjvm.so + bootLibraries = SO_PREFIX "jvm" SO_SUFFIX; } else if (strncmp(p, CRASHDIR_PROPERTY "=", sizeof(CRASHDIR_PROPERTY)) == 0) {