我有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
答案 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。它会起作用。