win10 环境下编译hadoop3.1.1 已经好多次啦。安装新系统后,这次遇到个新问题,折腾一两个小时
1.VS 2010 x64 下执行mvn 命令
mvn package -Pdist,native-win -DskipTests -Dtar -e -X
2.hadoop-hdfs-native-client模块报错
报错片段1
Caused by: org.apache.maven.plugin.MojoExecutionException: An Ant BuildException has occured: exec returned: 1
around Ant part ...<exec failοnerrοr="true" dir="D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target/native" executable="cmake">... @ 5:123 in D:\***\***\hadoop-hdfs-project\
hadoop-hdfs-native-client\target\antrun\build-main.xml
at org.apache.maven.plugin.antrun.AntRunMojo.execute (AntRunMojo.java:355)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
报错片段2.
[exec] “D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\ALL_BUILD.vcxproj”(默认目标) (1) ->
[exec] “D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs\test_libhdfs_threaded_hdfs_static.vcxproj”(默认目标) (9) ->
[exec] native_mini_dfs.lib(jni_helper.obj) : error LNK2019: 无法解析的外部符号 __imp_JNI_CreateJavaVM,该符号在函数 getGlobalJNIEnv 中被引用 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs\test_libhdfs_threaded_hdfs_static.vcxproj]
[exec] native_mini_dfs.lib(jni_helper.obj) : error LNK2019: 无法解析的外部符号 __imp_JNI_GetCreatedJavaVMs,该符 号在函数 getGlobalJNIEnv 中被引用 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs\test_libhdfs_threaded_hdfs_static.vcxproj]
[exec] D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs\RelWithDebInfo\test_libhdfs_threaded_hdfs_static.exe : fatal error LNK1120: 2 个无法解析的外部命令 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs\test_libhdfs_threaded_hdfs_static.vcxproj]
[exec]
[exec]
[exec] “D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\ALL_BUILD.vcxproj”(默认目标) (1) ->
[exec] “D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs-tests\test_native_mini_dfs.vcxproj”(默认目标) (11) ->
[exec] native_mini_dfs.lib(jni_helper.obj) : error LNK2019: 无法解析的外部符号 __imp_JNI_CreateJavaVM,该符号在函数 getGlobalJNIEnv 中被引用 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs-tests\test_native_mini_dfs.vcxproj]
[exec] native_mini_dfs.lib(jni_helper.obj) : error LNK2019: 无法解析的外部符号 __imp_JNI_GetCreatedJavaVMs,该符 号在函数 getGlobalJNIEnv 中被引用 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs-tests\test_native_mini_dfs.vcxproj]
[exec] D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs-tests\RelWithDebInfo\test_native_mini_dfs.exe : fatal error LNK1120: 2 个无法解析的外部命令 [D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target\native\main\native\libhdfs-tests\test_native_mini_dfs.vcxproj]
[exec]
[exec] 0 个警告
[exec] 12 个错误
搞了好久发现被上面的报错误导啦
3.解决办法
最后找到一段关键信息
'D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client/src/'
'-DGENERATED_JAVAH=D:\***\***\hadoop-hdfs-project\hadoop-hdfs-native-client\target/native/javah'
'-DJVM_ARCH_DATA_MODEL=32 ' //我的操作系统是64位的
'-DREQUIRE_FUSE=false'
'-A'
'${env.PLATFORM}'
也就是说我把jdk安装成32 位。而我的操作系统是64位的,
下载64位的jdk ,问题解决