前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“undefined JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析

“undefined JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析

作者头像
一见
发布2019-03-14 16:03:55
1.2K0
发布2019-03-14 16:03:55
举报
文章被收录于专栏:蓝天蓝天

如果编译时,报如下所示错误: ../../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的成员之一)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档