分享

正在自学MapReduce,请教一个java的基础问题

cqlouis 发表于 2014-10-29 12:55:45 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 8617
我在linux bash环境下编译一个利用java API来读取hdfs文件系统里面的文件的时候,需要用
  1. javac -classpath path-to-hadoop-xxx-.jar   filename.java
复制代码
(1)这里面那个.jar文件,我的理解是定义了filename.java里面的各个类,所以需要它,有点类似于c语言里面的include头文件,我这种理解对吗?(2)为什么我在编译一个最简单的helloworld.java程序的时候,就可以直接 javac helloworld.java呢?编译这个程序为什么不带上-classpath这个选项呢?



谢谢!

已有(6)人评论

跳转到指定楼层
bioger_hit 发表于 2014-10-29 13:47:56
(1)这是Java的语法,跟是不是hdfs文件关系不大,解释如下:
javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数
加上这个-classpath的作用是为了能够找到这个类,如果不加的话,就会编译出错。


(2)编译 javac helloworld.java是因为这个文件比较简单,没有用到其他类,系统提供的类已经足够了。




回复

使用道具 举报

desehawk 发表于 2014-10-29 13:49:07
初期学习,建议参考这个帖子

零基础学习hadoop到上手工作线路指导(初级篇)

回复

使用道具 举报

cqlouis 发表于 2014-10-29 13:58:39
bioger_hit 发表于 2014-10-29 13:47
(1)这是Java的语法,跟是不是hdfs文件关系不大,解释如下:
javac:如果当前你要编译的java文件中引用了 ...

首先谢谢你的回答。
你说到helloworld.java因为简单,所以用到系统提供的类足以,这里,“系统提供的类”是指安装jdk后,jdk目录里面的类,是吧?因为设置了java环境,javac会自动到jdk安装目录下面去找需要的类,是这个意思吗?


回复

使用道具 举报

cqlouis 发表于 2014-10-29 14:01:37
desehawk 发表于 2014-10-29 13:49
初期学习,建议参考这个帖子

零基础学习hadoop到上手工作线路指导(初级篇)

同样谢谢你
回复

使用道具 举报

bioger_hit 发表于 2014-10-29 14:24:32
cqlouis 发表于 2014-10-29 13:58
首先谢谢你的回答。
你说到helloworld.java因为简单,所以用到系统提供的类足以,这里,“系统提供的类 ...
对的,因为环境变量已经配置了,所以很容易找到jdk的相关类等
回复

使用道具 举报

永无止进 发表于 2014-10-29 17:02:43
是因为编译时需要-classpath path-to-hadoop-xxx-.jar 这个jar包,jre运行环境就自带很多jar包,而path-to-hadoop-xxx-.jar包不是系统自带的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条