hadoop中 java编译器的一点小疑惑

来源:互联网 发布:淘宝账号冻结 编辑:程序博客网 时间:2024/06/03 03:59

hadoop文档的mapreduce第一章介绍了WordCount实例的编译和运行等,其中编译的时候用的是这样的语句

$ bin/hadoop com.sun.tools.javac.Main WordCount.java
一直搞不懂com.sun.tools.javac.Main是啥,后来查看文档原来前面还有这样的描述

Assuming environment variables are set as follows:

export JAVA_HOME=/usr/java/defaultexport PATH=${JAVA_HOME}/bin:${PATH}export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

Compile WordCount.java and create a jar:

$ bin/hadoop com.sun.tools.javac.Main WordCount.java$ jar cf wc.jar WordCount*.class


然后我找到tools.jar解压,果然里头目录结构有com/sun/tools/javac/Main.class,所以这条命令应该是hadoop指令会在classpath中找com.sun.tools.javac.Main类,而其搜索路径就包含了tools.jar,所以能找到。
那这个类的作用呢跟JAVA_HOME下的bin目录中的javac有什么区别呢,为什么我们平时很多时候用的是javac命令,而现在用hadoop com.sun.tools.javac.Main呢,我想这两者都是可以正常编译java文件的,javac程序应该是com.sun.tools.javac下的class文件打包而成的可执行程序,作用是一样的,只是一个是由javac指令来执行,另一个是由hadoop调用com.sun.tools.javac.Main.class文件来执行,而我们在配置hadoop的过程中已经为hadoop环境配置好了环境变量,所以用hadoop指令会方便些,不然如果用javac命令的话,还需要针对其另外配置。
目前是这些浅薄的理解,可能有错,以后再修正。

0 0