【问题标题】:Cannot Compile WordCount.java无法编译 WordCount.java
【发布时间】:2012-09-20 22:39:40
【问题描述】:
mark@maestro1:/usr/lib/hadoop/wordcount_classes$ javac -classpath /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar:/usr/lib/hadoop/client/hadoop-mapreduce-client-core-2.0.0-cdh4.0.1.jar -d /usr/lib/hadoop/wordcount_classes /usr/lib/hadoop/wordcount_classes/WordCount.java
/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar(org/apache/hadoop/fs/Path.class):     
warning: Cannot find annotation method 'value()' in type 'LimitedPrivate': class file for org.apache.hadoop.classification.InterfaceAudience not found
/usr/lib/hadoop/wordcount_classes/WordCount.java:14: error: error while writing Map: could not create parent directories
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
            ^
1 error
1 warning

这个错误是怎么回事?我无法编译这个 wordcount.java 文件!

人们一直在告诉我正确设置我的 java 类路径。有人会对我如何处理这件事有任何评论吗?请帮忙!谢谢!

【问题讨论】:

标签: java javac cloudera word-count


【解决方案1】:

这个

-d /usr/lib/hadoop/wordcount_classes

指示您希望将类文件写入的位置。这个对吗 ?我怀疑你没有权限在那里写,因此:

error while writing Map: could not create parent directories

你能在那个目录中创建一个目录吗(提示:使用mkdir)?我不认为/usr/lib 目录是这样做的好地方,顺便说一句,即使你可以。我希望您在您的主目录中执行开发。

/usr 目录通常用于安装程序、库等,并且对普通用户有写入限制。 man hier 很好地解释了 Unix 中使用的不同目录。

【讨论】:

  • 谢谢!这有助于解决无法创建父目录的问题!我将其更改为位于 ~ 中的名为 wordcount 的新文件夹。现在为什么我仍然收到 1 个警告?这是我得到的:
  • mark@maestro1:~$ javac -classpath /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar:/usr/lib/hadoop/client/hadoop-mapreduce -client-core-2.0.0-cdh4.0.1.jar -d ~/wordcount /usr/lib/hadoop/wordcount_classes/WordCount.java /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1。 jar(org/apache/hadoop/fs/Path.class):警告:在“LimitedPrivate”类型中找不到注释方法“value()”:org.apache.hadoop.classification.InterfaceAudience 的类文件未找到 1 个警告跨度>
  • @user1663321 - 这可能是一个与 Hadoop 更相关的不同问题。很高兴 dir 的东西起作用了
猜你喜欢
  • 2019-08-14
  • 2012-08-08
  • 2014-06-24
  • 2015-11-25
  • 2015-06-07
  • 2013-03-06
  • 2016-08-24
  • 2018-10-18
  • 2014-02-16
相关资源
最近更新 更多