“undefined JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析
../../third-party/hadoop/lib/libhdfs.a(jni_helper.c.o): In function `getGlobalJNIEnv':
/root/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c:446: undefined reference to `JNI_GetCreatedJavaVMs'
/root/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c:505: undefined reference to `JNI_CreateJavaVM'
/root/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c:505: undefined reference to `JNI_CreateJavaVM'
是因为链接时,没有加上库文件libjvm.so。加上libjvm.so重编译,如果又遇到如下所示的错误:
../../third-party/libjvm.so: file not recognized: File format not recognized
这问题是因为libjvm.so不能被识别,libjvm.so的版本过高导致的
nm ../../third-party/libjvm.so | grep JNI_CreateJavaVM
nm: ../../third-party/libjvm.so: 不可识别的文件格式
查看nm的版本:
nm --version
GNU nm 2.16.91.0.5 20051219 (SUSE Linux)
Copyright 2005 Free Software Foundation, Inc.
本程序是自由软件;您可以按照 GNU 通用公共许可证
的条款对其进行再发行。本程序没有任何担保。
现在换成高一点的版本试试:
./nm --version
GNU nm 2.17.50.0.6-20.el5 20061020
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty.
再次执行,一切正常,需要升级 ld了,或者降低JRE或JDK的版本试试:
./nm libjvm.so | grep JNI_CreateJavaVM
00000000006307c0 T JNI_CreateJavaVM
实际应用中,编译虽然存在此问题,但运行时,可以使用更高版本的libjvm.so。
ld下载地址: http://ftp.gnu.org/gnu/binutils/(ld 和nm均是GNU binutils的成员之一)。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
“undefined reference to JNI_GetCreatedJavaVM”和“File format not recogni...
“undefined reference to JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析 如果编译时,报如下所示错误: ../../third-party/hadoop/lib/libhdfs.a(jni_helper.c.o): In function `getGlobalJNIEnv': /root/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c:446: undefined reference to `JNI_GetCreatedJavaVMs' /root/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c:505: undefined reference to `JNI_CreateJavaVM' /root/hadoop-2.4.0-src/hadoop-hdfs...
- 下一篇
loadFileSystems error & ExceptionUtils错误原因分析
loadFileSystemserror&ExceptionUtils错误原因分析 一见2014/5/7 C/C++程序通过hdfs.h访问HDFS,运行时遇到如下错误,会是什么原因了?(注:hadoop安装在/data/hadoop/hadoop-2.4.0,而/data/hadoop/current是指向它的软链接): loadFileSystemserror: (unabletogetstacktraceforjava.lang.NoClassDefFoundErrorexception:ExceptionUtils::getStackTraceerror.) hdfsBuilderConnect(forceNewInstance=0,nn=172.25.40.171,port=9001,kerbTicketCachePath=(NULL),userName=(NULL))error: (unabletogetstacktraceforjava.lang.NoClassDefFoundErrorexception:ExceptionUtils::getStackTrac...
相关文章
文章评论
共有0条评论来说两句吧...