我有 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
如果使用 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,只需将 json lib jars 复制粘贴到 hadoop lib dir 中并重新启动 hadoop。它会起作用。