Eclipse中编译FileUtil.java

本文介绍了在Windows的Eclipse中运行Hadoop 1.x MapReduce程序时遇到的Java.io.IOException,该错误是由于文件权限问题导致。解决方法包括修改`hadoop-1.2.1srccoreorgapachehadoopfsFileUtil.java`的`checkReturnValue`方法,并详细阐述了在Eclipse中编译、替换`hadoop-core-1.2.1.jar`文件的步骤,确保使用与Linux环境兼容的JDK版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:在windows的eclipse中运行hadoop1.x MapReduce程序会报错:
Java.io.IOException: Failed to set permissions of path: \tmp\Hadoop-Administrator\mapred\staging\Administrator-519341271.staging to 0700

原因:这是Windows环境下的文件权限问题,在Linux下可以正常运行。

解决方法是:修改hadoop-1.2.1\src\core\org\apache\hadoop\fs\FileUtil.java里面的checkReturnValue方法。

修改源代码涉及到重编译,有些小伙伴可能觉得不会编译,或者编译了很久依然不行,下面我详细描述如何编译FileUtil.java。
步骤如下:
(1)在Eclipse中新建一个Map/Reduce Project。
file==>new==>other
这里写图片描述
这里写图片描述

(2)然后在src目录下新建一个包org.apache.hadoop.fs(注意严格按照这里的命名,不然后面执行M-R时会报错显示 notclassfound),再把hadoop-1.2.1\src\core\org\apache\hadoop\fs\FileUtil.java文件拷贝到这个包下面。
这里写图片描述
(3)打开FileUtil.java,修改checkReturnValue方法,直接注释掉报错部分代码:
这里写图片描述

(4)文件修改完成后,会在工作空间下工程的bin\org\apache\hadoop\fs目录下有FileUtil$CygPathCommand.class、FileUtil.class这两个类文件(如果没有,可以在eclipse里面再手动编译下)
注意:jdk版本的问题:Linux的是1.6 所以Windows上编译也必须1.6,否则不行。
这里写图片描述

(5)用解压工具打开hadoop-core-1.2.1.jar包,将上面两个文件拷贝到hadoop-core-1.2.1.jar\org\apache\hadoop\fs目录下,将原来的文件覆盖掉即可。如果嫌自己编译麻烦,可以使用博主自己编译好的hadoop-core-1.2.1.jar,亲测可用。

(6)然后将修改过的hadoop-core-1.2.1.jar分别替换hadoop安装目录和Linux系统上hadoop集群(每个节点)目录下的hadoop-core-1.2.1.jar。

(7)重新启动hadoop集群,通过eclipse执行MapReduce程序。

工件构建器: Error: Couldn't copy [D:\java chengxu\daer xia\JDBC_web\web\WEB-INF\lib\standard.jar] to [D:\java chengxu\daer xia\JDBC_web\out\artifacts\JDBC_web_war_exploded\WEB-INF\lib\standard.jar] java.io.IOException: Couldn't copy [D:\java chengxu\daer xia\JDBC_web\web\WEB-INF\lib\standard.jar] to [D:\java chengxu\daer xia\JDBC_web\out\artifacts\JDBC_web_war_exploded\WEB-INF\lib\standard.jar] at com.intellij.openapi.util.io.FileUtil.performCopy(FileUtil.java:412) at com.intellij.openapi.util.io.FileUtil.copyContent(FileUtil.java:401) at org.jetbrains.jps.incremental.FSOperations.copy(FSOperations.java:490) at org.jetbrains.jps.incremental.artifacts.instructions.FilterCopyHandler.copyFile(FilterCopyHandler.java:27) at org.jetbrains.jps.incremental.artifacts.instructions.FileBasedArtifactRootDescriptor.copyFromRoot(FileBasedArtifactRootDescriptor.java:89) at org.jetbrains.jps.incremental.artifacts.IncArtifactBuilder$IncArtifactBuilderHelper.processFiles(IncArtifactBuilder.java:236) at org.jetbrains.jps.incremental.artifacts.IncArtifactBuilder$IncArtifactBuilderHelper.build(IncArtifactBuilder.java:95) at org.jetbrains.jps.incremental.artifacts.IncArtifactBuilder.build(IncArtifactBuilder.java:50) at org.jetbrains.jps.incremental.artifacts.IncArtifactBuilder.build(IncArtifactBuilder.java:36) at org.jetbrains.jps.incremental.IncProjectBuilder.buildTarget(IncProjectBuilder.java:1314) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:608) at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1573) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1287) at org.jetbrains.jps.incremental.IncProjectBuilder$BuildParallelizer$1.run(IncProjectBuilder.java:1249) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30) at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:212) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.nio.file.AccessDeniedException: D:\java chengxu\daer xia\JDBC_web\out\artifacts\JDBC_web_war_exploded\WEB-INF\lib\standard.jar at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:236) at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:484) at java.base/java.nio.file.Files.newOutputStream(Files.java:228) at com.intellij.openapi.util.io.FileUtil.openOutputStream(FileUtil.java:445) at com.intellij.openapi.util.io.FileUtil.performCopy(FileUtil.java:408) ... 21 more
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值