【问题标题】:Unable to generate jar file for Hadoop无法为 Hadoop 生成 jar 文件
【发布时间】:2016-05-03 23:18:09
【问题描述】:

我有 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

【问题讨论】:

  • 我在 Eclipse 中试过了,它在那里工作正常,
  • 这对我来说听起来像是一个依赖问题
  • 可能是,我还有其他 java 文件,我已经将它们存储在一个包中
  • 你说你可以在eclipse中创建一个JAR?
  • s 先生,但是我没有进入 ubuntu 终端,并且从 eclipse 生成的 Jar 文件也无法在 hadoop 中工作

标签: java hadoop jar mapreduce


【解决方案1】:

如果您使用 Java 7 和 javax.json 库,则不需要包含任何外部文件。但是如果你使用 Java 6 和 org.json 库,你必须显式地添加 JAR。但它似乎在日食中有效。所以我猜你正在使用 jdk6 和 hadoop。如果把hadoop改成jdk 7,问题就解决了。

它在 Eclipse 中有效,因为您使用 jdk 7 配置了构建路径。

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

如果您不使用 maven,只需将您的 json lib jar 复制粘贴到 hadoop lib 目录中并重新启动 hadoop。它会起作用的。

【讨论】:

  • 我没有任何其他外部 jar 文件来解析 Json 数据,我只有 JAVA 文件,并且我将所有 jar 文件存储在单个包中
  • 如果你使用 Java 7 & javax.json lib,你不需要包含任何外部文件。但是如果你使用 Java 6 和 org.json 库,你必须显式地添加 JAR。但它似乎在日食中有效。所以我猜你正在使用 jdk6 和 hadoop。如果把hadoop改成jdk 7,问题就解决了
  • 先生,我在 JDK7 中使用 org.json 库,所以它在 eclipse 中正常工作,如何使用 javax.json 库解析 json 数据
  • Hadoop 1 与用于 mapreduce 作业的 JDK 6 兼容。所以请使用 jdk 6 和 org.json 库文件运行它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
相关资源
最近更新 更多