解决Eclipse+JDK 32 bit+hadoop 32bit 遇到org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lan

来源:互联网 发布:网络弊大于利反方辩词 编辑:程序博客网 时间:2024/05/20 23:08

引言

解决Eclipse+JDK 32 bit+hadoop 32bit 调试并提交MapReduce作业遇到的系列问题:

 Exceptionin thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)

at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)

at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:570)

at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977

之前一直在本地(windows 64 bit )的 Eclipse+hadoop2.5.2(64 bit)+jdk 64下调试,由于近期的任务是通过JNative完成Java调用DCMTK(C++),而JNative的运行要求是jdk 32 bit,故现在更改环境为Eclipse+JDK 32 bit+hadoop 32bit (hadoop2.2.0,2.5.1之前都是32位的)。

为了解决这个困扰很久的问题,进行了诸多尝试,最后的成功方案是:

hadoop-2.2.0\bin的hadoop.dll放到C:\Windows\System32下,然后重启电脑,还是出现这样的问题。

然后,我们下载对应hadoop源代码,hadoop-2.2.0-src.tar.gz解压,hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio下NativeIO.java 复制到对应的Eclipse的project,然后修改435行为return true如图所示:

错误终于一去不复返了,顺利运行了!心累啊,这么个问题困扰了一天!


0 0
原创粉丝点击