无法为Hadoop生成jar文件

时间:2016-01-27 06:11:03

标签: java hadoop jar mapreduce

我有16个Java文件,我正在尝试使用以下命令为Hadoop生态系统生成JAR文件:

javac -classpath /usr/local/hadoop/hadoop-core-1.0.3.jar:/usr/local/hadoop/lib/commons-cli-1.2.jar  JsonV.java

JsonV.java 是具有main函数的类,此Java文件调用其他Java文件。我收到以下错误,有人可以帮我解决这个问题吗?

JsonV.java:37: error: cannot find symbol
JSONObject obj = new JSONObject(tuple[i]);
                     ^ 
  symbol:   class JSONObject
  location: class Map
JsonV.java:37: error: cannot find symbol
                    JSONObject obj = new JSONObject(tuple[i]);
                                         ^
  symbol:   class JSONObject
  location: class Map
JsonV.java:43: error: cannot find symbol
            }catch(JSONException e){
                   ^
  symbol:   class JSONException
  location: class Map
JsonV.java:58: error: cannot find symbol
            }catch(JSONException e){
                   ^
  symbol:   class JSONException
  location: class Reduce

1 个答案:

答案 0 :(得分:0)

如果您使用Java 7& javax.json lib,你不需要包含任何外部文件。但是如果你使用Java 6& org.json lib,你必须显式添加JAR。但似乎它在日食中起作用。所以我猜你正在使用带有hadoop的jdk6。如果你把它更改为jdk 7 for hadoop,问题就会解决。

它在eclipse中工作,因为您使用jdk 7配置了构建路径。

如果使用maven,则必须在pom.xml文件中提及json lib依赖项。

如果你不使用maven,只需在hadoop lib dir中复制粘贴你的json lib jar并重新启动hadoop。它会起作用。