Andy Isaacson created HADOOP-9001: ------------------------------------- Summary: libhadoop.so links against wrong OpenJDK libjvm.so Key: HADOOP-9001 URL: https://issues.apache.org/jira/browse/HADOOP-9001 Project: Hadoop Common Issue Type: Bug Reporter: Andy Isaacson Priority: Minor
After building against OpenJDK 6b24-1.11.4-3 (Debian amd64) using bq. {{mvn -Pnative,dist clean package -Dmaven.javadoc.skip=true -DskipTests -Dtar}} the resulting binaries {{libhadoop.so}} and {{libhdfs.so}} are linked to the wrong {{libjvm.so}}: {code} % LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server ldd hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/lib/native/libhadoop.so.1.0.0 linux-vdso.so.1 => (0x00007fff8c7ff000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f31df30e000) libjvm.so.0 => not found libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f31def86000) /lib64/ld-linux-x86-64.so.2 (0x00007f31df73d000) {code} Inspecting the build output it appears that {{JNIFlags.cmake}} decided, mysteriously, to link against {{/usr/lib/jvm/default-java/jre/lib/amd64/jamvm/libjvm.so}}, based on: {code} [exec] JAVA_HOME=, JAVA_JVM_LIBRARY=/usr/lib/jvm/default-java/jre/lib/amd64/jamvm/libjvm.so [exec] JAVA_INCLUDE_PATH=/usr/lib/jvm/default-java/include, JAVA_INCLUDE_PATH2=/usr/lib/jvm/default-java/include/linux [exec] Located all JNI components successfully. {code} The "jamvm" is not mentioned anywhere in my environment or any symlinks in /usr, so apparently cmake iterated over the directories in {{/usr/lib/jvm/default-java/jre/lib/amd64}} to find it. The following {{libjvm.so}} files are present on this machine: {code} -rw-r--r-- 1 root root 1050190 Sep 2 13:38 /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/cacao/libjvm.so -rw-r--r-- 1 root root 1554628 Sep 2 11:21 /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so -rw-r--r-- 1 root root 12193850 Sep 2 13:38 /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server/libjvm.so {code} Note the difference between {{libjvm.so}} and {{libjvm.so.0}}; the latter seems to come from the {{DT_SONAME}} in {{jamvm/libjvm.so}}, but that library seems to just be broken since there's no {{libjvm.so.0}} symlink anywhere on the filesystem. I suspect *that* is a bug in OpenJDK but we should just avoid the issue by finding the right value for {{JAVA_JVM_LIBRARY}}. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira