jni-rs / jni-sys

Apache License 2.0
53 stars 19 forks source link

Build issues on macOS on Java 9+ #10

Closed marschall closed 10 months ago

marschall commented 5 years ago

I have trouble building the project on macOS on Java 9+.

The issue is that libjvm.dylib has been moved from ${JAVA_HOME}/jre/lib/server to ${JAVA_HOME}/lib/server

On my system it looks like this:

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/server/libjvm.dylib
/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/server/libjvm.dylib
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/server/libjvm.dylib

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/include/jni.h
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/jni.h
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/include/jni.h
/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/include/jni.h
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/include/jni.h
dmitry-timofeev commented 5 years ago

FYI, jni-rs uses such build script to find a libjvm: https://github.com/jni-rs/jni-rs/blob/master/build.rs#L80

There is a rough bash alternative too from exonum:

# Unfortunately, a simple `which java` will not work for some users (e.g., jenv),
# hence this a bit complex thing.
JAVA_HOME="$(java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' | awk '{print $3}')"
echo "JAVA_HOME=${JAVA_HOME}"

# Find the directory containing libjvm (the relative path has changed in Java 9).
export JAVA_LIB_DIR="$(find ${JAVA_HOME} -type f -name libjvm.\* | xargs -n1 dirname)"
rib commented 10 months ago

I'm going to close this just because it's such an old issue and I guess it's very likely no longer an issue.

Please reopen if there's still an issue with building on macOS.