进度好慢!

    最近在学习hadoop,上次安装环境到这次已经经历了好长时间了,以下介绍使用maven编译hadoop源码时遇到的问题。

    环境:eclipse+maven

    根据官网教程下载源码(http://wiki.apache.org/hadoop/EclipseEnvironment),

git clone git://git.apache.org/hadoop-common.git
    下载完成源码之后根据教程编译,于是,噩梦出现:

    1.编译时报“是sun的专用api,可能在未来版本删除”,此问题原因是maven编译插件没有配置版本号或者配置的版本号过低,需修改maven配置,如下;

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.5.1</version> 
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
          </configuration>
        </plugin>
    2.编译时需使用protoc2.4,此包最新的(目前最新2.5)不好用;

    3.解决完以上两个问题之后,还是报错:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (compile-ms-winutils) on project hadoop-common: Command execution failed. Cannot run program "msbuild" (in directory "D:\otherworkspace\hadoop-common\hadoop-common-project\hadoop-common"): CreateProcess error=2, ?????????????????? -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (compile-ms-winutils) on project hadoop-common: Command execution failed.
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Command execution failed.
	at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:350)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
	... 19 more
Caused by: java.io.IOException: Cannot run program "msbuild" (in directory "D:\otherworkspace\hadoop-common\hadoop-common-project\hadoop-common"): CreateProcess error=2, ??????????????????
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	at java.lang.Runtime.exec(Runtime.java:615)
	at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
	at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:246)
	at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:302)
	at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
	at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:589)
	at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:335)
	... 21 more
Caused by: java.io.IOException: CreateProcess error=2, ??????????????????
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:189)
	at java.lang.ProcessImpl.start(ProcessImpl.java:133)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
	... 28 more
[ERROR] 
    这次,没有解决,就用了个粗暴的方法,将$HADOOP/hadoop-common-project/hadoop-common/pom.xml中第636--667(msbuild)注释掉,最终提示编译通过。

    这么做虽然编译通过了,但是在导入项目的时候还是有问题,有些项目缺少依赖的类,这部分只有等下次再解决了。- -

    新手学这个确实感觉很吃力,哪位高人能不能给指点下~~    


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐